@@ -7,7 +7,8 @@ namespace GeneralUpdate.Common.Internal;
7
7
8
8
public static class GeneralTracer
9
9
{
10
- private static readonly object _lockObj = new object ( ) ;
10
+ private static readonly object _lockObj = new ( ) ;
11
+ private static bool _isTracingEnabled ;
11
12
private static string _currentLogDate ;
12
13
private static TextWriterTraceListener _fileListener ;
13
14
@@ -28,34 +29,32 @@ static GeneralTracer()
28
29
Trace . Listeners . Add ( new DefaultTraceListener ( ) ) ;
29
30
30
31
Trace . AutoFlush = true ;
32
+ _isTracingEnabled = true ;
31
33
}
32
34
33
35
private static void InitializeFileListener ( )
34
36
{
35
37
//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 ;
41
41
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
+ }
49
49
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 ) ;
52
52
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" } ;
55
55
56
- Trace . Listeners . Add ( _fileListener ) ;
57
- _currentLogDate = today ;
58
- }
56
+ Trace . Listeners . Add ( _fileListener ) ;
57
+ _currentLogDate = today ;
59
58
}
60
59
61
60
public static void Debug ( string message ) => WriteTraceMessage ( TraceLevel . Verbose , message ) ;
@@ -85,15 +84,27 @@ public static void SetTracingEnabled(bool enabled)
85
84
lock ( _lockObj )
86
85
{
87
86
Trace . AutoFlush = enabled ;
87
+ _isTracingEnabled = enabled ;
88
88
foreach ( TraceListener listener in Trace . Listeners )
89
89
{
90
90
listener . Filter = enabled ? null : new EventTypeFilter ( SourceLevels . Off ) ;
91
91
}
92
92
}
93
93
}
94
94
95
+ public static bool IsTracingEnabled ( )
96
+ {
97
+ lock ( _lockObj )
98
+ {
99
+ return _isTracingEnabled ;
100
+ }
101
+ }
102
+
95
103
private static void WriteTraceMessage ( TraceLevel level , string message )
96
104
{
105
+ if ( ! IsTracingEnabled ( ) )
106
+ return ;
107
+
97
108
InitializeFileListener ( ) ;
98
109
var timestamp = DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss.fff" ) ;
99
110
var levelName = GetLevelName ( level ) ;
@@ -114,10 +125,7 @@ private static void WriteTraceMessage(TraceLevel level, string message)
114
125
fullMessage = $ "[{ timestamp } ] [{ levelName } ] : { message } ";
115
126
}
116
127
117
- lock ( _lockObj )
118
- {
119
- Trace . WriteLine ( fullMessage ) ;
120
- }
128
+ Trace . WriteLine ( fullMessage ) ;
121
129
}
122
130
123
131
private static string GetLevelName ( TraceLevel level ) => level switch
0 commit comments