55using Microsoft . ApplicationInsights . DataContracts ;
66
77using System . Diagnostics ;
8+ using Microsoft . Extensions . DependencyInjection ;
89
910namespace Microsoft . OneFuzz . Service ;
1011
@@ -132,6 +133,7 @@ public interface ILogTracer
132133 void ForceFlush ( ) ;
133134 void Info ( string message ) ;
134135 void Warning ( string message ) ;
136+ void Verbose ( string message ) ;
135137
136138 ILogTracer WithTag ( string k , string v ) ;
137139 ILogTracer WithTags ( ( string , string ) [ ] ? tags ) ;
@@ -155,11 +157,11 @@ public class LogTracer : ILogTracerInternal
155157 private Guid _correlationId ;
156158 private List < ILog > _loggers ;
157159 private Dictionary < string , string > _tags ;
160+ private SeverityLevel _logSeverityLevel ;
158161
159162 public Guid CorrelationId => _correlationId ;
160163 public IReadOnlyDictionary < string , string > Tags => _tags ;
161164
162-
163165 private static List < KeyValuePair < string , string > > ConvertTags ( ( string , string ) [ ] ? tags )
164166 {
165167 List < KeyValuePair < string , string > > converted = new List < KeyValuePair < string , string > > ( ) ;
@@ -177,14 +179,17 @@ private static List<KeyValuePair<string, string>> ConvertTags((string, string)[]
177179 }
178180 }
179181
180- public LogTracer ( Guid correlationId , ( string , string ) [ ] ? tags , List < ILog > loggers ) : this ( correlationId , new Dictionary < string , string > ( ConvertTags ( tags ) ) , loggers ) { }
182+ public LogTracer ( Guid correlationId , ( string , string ) [ ] ? tags , List < ILog > loggers , SeverityLevel logSeverityLevel ) :
183+ this ( correlationId , new Dictionary < string , string > ( ConvertTags ( tags ) ) , loggers , logSeverityLevel )
184+ { }
181185
182186
183- public LogTracer ( Guid correlationId , IReadOnlyDictionary < string , string > tags , List < ILog > loggers )
187+ public LogTracer ( Guid correlationId , IReadOnlyDictionary < string , string > tags , List < ILog > loggers , SeverityLevel logSeverityLevel )
184188 {
185189 _correlationId = correlationId ;
186190 _tags = new ( tags ) ;
187191 _loggers = loggers ;
192+ _logSeverityLevel = logSeverityLevel ;
188193 }
189194
190195 //Single threaded only
@@ -220,42 +225,66 @@ public ILogTracer WithTags((string, string)[]? tags)
220225 newTags [ k ] = v ;
221226 }
222227 }
223- return new LogTracer ( CorrelationId , newTags , _loggers ) ;
228+ return new LogTracer ( CorrelationId , newTags , _loggers , _logSeverityLevel ) ;
229+ }
230+
231+ public void Verbose ( string message )
232+ {
233+ if ( _logSeverityLevel >= SeverityLevel . Verbose )
234+ {
235+ var caller = GetCaller ( ) ;
236+ foreach ( var logger in _loggers )
237+ {
238+ logger . Log ( CorrelationId , message , SeverityLevel . Verbose , Tags , caller ) ;
239+ }
240+ }
224241 }
225242
226243 public void Info ( string message )
227244 {
228- var caller = GetCaller ( ) ;
229- foreach ( var logger in _loggers )
245+ if ( _logSeverityLevel >= SeverityLevel . Information )
230246 {
231- logger . Log ( CorrelationId , message , SeverityLevel . Information , Tags , caller ) ;
247+ var caller = GetCaller ( ) ;
248+ foreach ( var logger in _loggers )
249+ {
250+ logger . Log ( CorrelationId , message , SeverityLevel . Information , Tags , caller ) ;
251+ }
232252 }
233253 }
234254
235255 public void Warning ( string message )
236256 {
237- var caller = GetCaller ( ) ;
238- foreach ( var logger in _loggers )
257+ if ( _logSeverityLevel >= SeverityLevel . Warning )
239258 {
240- logger . Log ( CorrelationId , message , SeverityLevel . Warning , Tags , caller ) ;
259+ var caller = GetCaller ( ) ;
260+ foreach ( var logger in _loggers )
261+ {
262+ logger . Log ( CorrelationId , message , SeverityLevel . Warning , Tags , caller ) ;
263+ }
241264 }
242265 }
243266
244267 public void Error ( string message )
245268 {
246- var caller = GetCaller ( ) ;
247- foreach ( var logger in _loggers )
269+ if ( _logSeverityLevel >= SeverityLevel . Error )
248270 {
249- logger . Log ( CorrelationId , message , SeverityLevel . Error , Tags , caller ) ;
271+ var caller = GetCaller ( ) ;
272+ foreach ( var logger in _loggers )
273+ {
274+ logger . Log ( CorrelationId , message , SeverityLevel . Error , Tags , caller ) ;
275+ }
250276 }
251277 }
252278
253279 public void Critical ( string message )
254280 {
255- var caller = GetCaller ( ) ;
256- foreach ( var logger in _loggers )
281+ if ( _logSeverityLevel >= SeverityLevel . Critical )
257282 {
258- logger . Log ( CorrelationId , message , SeverityLevel . Critical , Tags , caller ) ;
283+ var caller = GetCaller ( ) ;
284+ foreach ( var logger in _loggers )
285+ {
286+ logger . Log ( CorrelationId , message , SeverityLevel . Critical , Tags , caller ) ;
287+ }
259288 }
260289 }
261290
0 commit comments