@@ -17,13 +17,20 @@ internal ILogWriter WrappedLogWriter
1717 }
1818 public string LogWriterName
1919 {
20- get { return this . WrappedLogWriter . Name ; }
20+ get { return this . WrappedLogWriter ? . Name ; }
2121 }
2222
23- internal LogWriterManager ( )
23+ /// <param name="enabled">
24+ /// If set to false, no default log writer will be set at first, but a new one can be added with
25+ /// <see cref="Attach(ILogWriter)"/> later.
26+ /// </param>
27+ internal LogWriterManager ( bool enabled )
2428 {
25- this . DefaultLogWriter = new ServerLogWriter ( ) ;
26- this . WrappedLogWriter = this . DefaultLogWriter ;
29+ if ( enabled )
30+ {
31+ this . DefaultLogWriter = new ServerLogWriter ( ) ;
32+ this . WrappedLogWriter = this . DefaultLogWriter ;
33+ }
2734 }
2835
2936 public void Attach ( ILogWriter newLogWriter )
@@ -57,7 +64,7 @@ public void Attach(ILogWriter newLogWriter)
5764
5865 if ( detachException != null )
5966 this . ServerWriteLine (
60- string . Format ( "Log writer \" {0}\" had thrown an unexpected exception:\n {1}" , prevLogWriter . Name , detachException ) ,
67+ string . Format ( "Log writer \" {0}\" has thrown an unexpected exception:\n {1}" , prevLogWriter ? . Name , detachException ) ,
6168 TraceLevel . Error ) ;
6269 }
6370
@@ -72,7 +79,7 @@ internal void Deatch()
7279 }
7380 catch ( Exception ex )
7481 {
75- DefaultLogWriter . ServerWriteLine (
82+ DefaultLogWriter ? . ServerWriteLine (
7683 string . Format ( "Log writer \" {0}\" has thrown an unexpected exception:\n {1}" , this . LogWriterName , ex ) , TraceLevel . Error ) ;
7784 }
7885
@@ -81,27 +88,33 @@ internal void Deatch()
8188
8289 internal void ServerWriteLine ( string message , TraceLevel kind )
8390 {
91+ if ( this . WrappedLogWriter == null )
92+ return ;
93+
8494 try
8595 {
8696 this . WrappedLogWriter . ServerWriteLine ( message , kind ) ;
8797 }
8898 catch ( Exception ex )
8999 {
90- this . DefaultLogWriter . ServerWriteLine ( string . Format (
100+ this . DefaultLogWriter ? . ServerWriteLine ( string . Format (
91101 "The attached log writer \" {0}\" has thrown an unexpected exception:\n {1}" , this . LogWriterName , ex ) ,
92102 TraceLevel . Error ) ;
93103 }
94104 }
95105
96106 public void PluginWriteLine ( TerrariaPlugin plugin , string message , TraceLevel kind )
97107 {
108+ if ( this . WrappedLogWriter == null )
109+ return ;
110+
98111 try
99112 {
100113 this . WrappedLogWriter . PluginWriteLine ( plugin , message , kind ) ;
101114 }
102115 catch ( Exception ex )
103116 {
104- DefaultLogWriter . ServerWriteLine ( string . Format (
117+ DefaultLogWriter ? . ServerWriteLine ( string . Format (
105118 "The attached log writer \" {0}\" has thrown an unexpected exception:\n {1}" , this . LogWriterName , ex ) ,
106119 TraceLevel . Error ) ;
107120 }
0 commit comments