@@ -7,7 +7,8 @@ namespace GeneralUpdate.Common.Internal;
77
88public static class GeneralTracer
99{
10- private static readonly object _lockObj = new object ( ) ;
10+ private static readonly object _lockObj = new ( ) ;
11+ private static bool _isTracingEnabled ;
1112 private static string _currentLogDate ;
1213 private static TextWriterTraceListener _fileListener ;
1314
@@ -28,34 +29,32 @@ static GeneralTracer()
2829 Trace . Listeners . Add ( new DefaultTraceListener ( ) ) ;
2930
3031 Trace . AutoFlush = true ;
32+ _isTracingEnabled = true ;
3133 }
3234
3335 private static void InitializeFileListener ( )
3436 {
3537 //Ensure that log files are rotated on a daily basis
36- lock ( _lockObj )
37- {
38- var today = DateTime . Now . ToString ( "yyyy-MM-dd" ) ;
39- if ( today == _currentLogDate && _fileListener != null )
40- return ;
38+ var today = DateTime . Now . ToString ( "yyyy-MM-dd" ) ;
39+ if ( today == _currentLogDate && _fileListener != null )
40+ return ;
4141
42- if ( _fileListener != null )
43- {
44- Trace . Listeners . Remove ( _fileListener ) ;
45- _fileListener . Flush ( ) ;
46- _fileListener . Close ( ) ;
47- _fileListener . Dispose ( ) ;
48- }
42+ if ( _fileListener != null )
43+ {
44+ Trace . Listeners . Remove ( _fileListener ) ;
45+ _fileListener . Flush ( ) ;
46+ _fileListener . Close ( ) ;
47+ _fileListener . Dispose ( ) ;
48+ }
4949
50- var logDir = Path . Combine ( AppDomain . CurrentDomain . BaseDirectory , "Logs" ) ;
51- Directory . CreateDirectory ( logDir ) ;
50+ var logDir = Path . Combine ( AppDomain . CurrentDomain . BaseDirectory , "Logs" ) ;
51+ Directory . CreateDirectory ( logDir ) ;
5252
53- var logFileName = Path . Combine ( logDir , $ "generalupdate-trace { today } .log") ;
54- _fileListener = new TextWriterTraceListener ( logFileName ) { Name = "FileListener" } ;
53+ var logFileName = Path . Combine ( logDir , $ "generalupdate-trace { today } .log") ;
54+ _fileListener = new TextWriterTraceListener ( logFileName ) { Name = "FileListener" } ;
5555
56- Trace . Listeners . Add ( _fileListener ) ;
57- _currentLogDate = today ;
58- }
56+ Trace . Listeners . Add ( _fileListener ) ;
57+ _currentLogDate = today ;
5958 }
6059
6160 public static void Debug ( string message ) => WriteTraceMessage ( TraceLevel . Verbose , message ) ;
@@ -85,15 +84,27 @@ public static void SetTracingEnabled(bool enabled)
8584 lock ( _lockObj )
8685 {
8786 Trace . AutoFlush = enabled ;
87+ _isTracingEnabled = enabled ;
8888 foreach ( TraceListener listener in Trace . Listeners )
8989 {
9090 listener . Filter = enabled ? null : new EventTypeFilter ( SourceLevels . Off ) ;
9191 }
9292 }
9393 }
9494
95+ public static bool IsTracingEnabled ( )
96+ {
97+ lock ( _lockObj )
98+ {
99+ return _isTracingEnabled ;
100+ }
101+ }
102+
95103 private static void WriteTraceMessage ( TraceLevel level , string message )
96104 {
105+ if ( ! IsTracingEnabled ( ) )
106+ return ;
107+
97108 InitializeFileListener ( ) ;
98109 var timestamp = DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss.fff" ) ;
99110 var levelName = GetLevelName ( level ) ;
@@ -114,10 +125,7 @@ private static void WriteTraceMessage(TraceLevel level, string message)
114125 fullMessage = $ "[{ timestamp } ] [{ levelName } ] : { message } ";
115126 }
116127
117- lock ( _lockObj )
118- {
119- Trace . WriteLine ( fullMessage ) ;
120- }
128+ Trace . WriteLine ( fullMessage ) ;
121129 }
122130
123131 private static string GetLevelName ( TraceLevel level ) => level switch
0 commit comments