2
2
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3
3
4
4
using System . Collections ;
5
+ using System . Diagnostics ;
5
6
using Serilog . Events ;
6
7
using Microsoft . Extensions . Logging ;
7
8
using Serilog . Debugging ;
@@ -138,11 +139,11 @@ public void LogsCorrectMessage()
138
139
139
140
logger . Log < object > ( LogLevel . Information , 0 , null ! , null ! , null ! ) ;
140
141
logger . Log ( LogLevel . Information , 0 , TestMessage , null ! , null ! ) ;
141
- logger . Log < object > ( LogLevel . Information , 0 , null ! , null ! , ( _ , __ ) => TestMessage ) ;
142
+ logger . Log < object > ( LogLevel . Information , 0 , null ! , null ! , ( _ , _ ) => TestMessage ) ;
142
143
143
144
Assert . Equal ( 3 , sink . Writes . Count ) ;
144
145
145
- Assert . Equal ( 1 , sink . Writes [ 0 ] . Properties . Count ) ;
146
+ Assert . Single ( sink . Writes [ 0 ] . Properties ) ;
146
147
Assert . Empty ( sink . Writes [ 0 ] . RenderMessage ( ) ) ;
147
148
148
149
Assert . Equal ( 2 , sink . Writes [ 1 ] . Properties . Count ) ;
@@ -308,7 +309,7 @@ public void WhenDisposeIsTrueProvidedLoggerIsDisposed()
308
309
}
309
310
310
311
[ Fact ]
311
- public void BeginScopeDestructuresObjectsWhenDestructurerIsUsedInMessageTemplate ( )
312
+ public void BeginScopeDestructuresObjectsWhenCapturingOperatorIsUsedInMessageTemplate ( )
312
313
{
313
314
var ( logger , sink ) = SetUp ( LogLevel . Trace ) ;
314
315
@@ -328,7 +329,7 @@ public void BeginScopeDestructuresObjectsWhenDestructurerIsUsedInMessageTemplate
328
329
}
329
330
330
331
[ Fact ]
331
- public void BeginScopeDestructuresObjectsWhenDestructurerIsUsedInDictionary ( )
332
+ public void BeginScopeDestructuresObjectsWhenCapturingOperatorIsUsedInDictionary ( )
332
333
{
333
334
var ( logger , sink ) = SetUp ( LogLevel . Trace ) ;
334
335
@@ -348,7 +349,7 @@ public void BeginScopeDestructuresObjectsWhenDestructurerIsUsedInDictionary()
348
349
}
349
350
350
351
[ Fact ]
351
- public void BeginScopeDoesNotModifyKeyWhenDestructurerIsNotUsedInMessageTemplate ( )
352
+ public void BeginScopeDoesNotModifyKeyWhenCapturingOperatorIsNotUsedInMessageTemplate ( )
352
353
{
353
354
var ( logger , sink ) = SetUp ( LogLevel . Trace ) ;
354
355
@@ -362,7 +363,7 @@ public void BeginScopeDoesNotModifyKeyWhenDestructurerIsNotUsedInMessageTemplate
362
363
}
363
364
364
365
[ Fact ]
365
- public void BeginScopeDoesNotModifyKeyWhenDestructurerIsNotUsedInDictionary ( )
366
+ public void BeginScopeDoesNotModifyKeyWhenCapturingOperatorIsNotUsedInDictionary ( )
366
367
{
367
368
var ( logger , sink ) = SetUp ( LogLevel . Trace ) ;
368
369
@@ -466,7 +467,10 @@ public void MismatchedMessageTemplateParameterCountIsHandled()
466
467
{
467
468
var ( logger , sink ) = SetUp ( LogLevel . Trace ) ;
468
469
470
+ #pragma warning disable CA2017
471
+ // ReSharper disable once StructuredMessageTemplateProblem
469
472
logger . LogInformation ( "Some test message with {Two} {Properties}" , "OneProperty" ) ;
473
+ #pragma warning restore CA2017
470
474
471
475
Assert . Empty ( sink . Writes ) ;
472
476
}
@@ -475,7 +479,7 @@ public void MismatchedMessageTemplateParameterCountIsHandled()
475
479
public void ExceptionFromAuditSinkIsUnhandled ( )
476
480
{
477
481
var serilogLogger = new LoggerConfiguration ( )
478
- . AuditTo . Sink ( new MySink ( ) )
482
+ . AuditTo . Sink ( new UnimplementedSink ( ) )
479
483
. CreateLogger ( ) ;
480
484
481
485
var provider = new SerilogLoggerProvider ( serilogLogger ) ;
@@ -486,11 +490,38 @@ public void ExceptionFromAuditSinkIsUnhandled()
486
490
Assert . Equal ( "Oops" , ex . InnerException . Message ) ;
487
491
}
488
492
489
- private class MySink : ILogEventSink
493
+ class UnimplementedSink : ILogEventSink
490
494
{
491
495
public void Emit ( LogEvent logEvent )
492
496
{
493
497
throw new NotImplementedException ( "Oops" ) ;
494
498
}
495
499
}
500
+
501
+ [ Fact ]
502
+ public void TraceAndSpanIdsAreCaptured ( )
503
+ {
504
+ #if FORCE_W3C_ACTIVITY_ID
505
+ Activity . DefaultIdFormat = ActivityIdFormat . W3C ;
506
+ Activity . ForceDefaultIdFormat = true ;
507
+ #endif
508
+
509
+ using var listener = new ActivityListener ( ) ;
510
+ listener . ShouldListenTo = _ => true ;
511
+ listener . Sample = ( ref ActivityCreationOptions < ActivityContext > _ ) => ActivitySamplingResult . AllData ;
512
+
513
+ ActivitySource . AddActivityListener ( listener ) ;
514
+
515
+ var source = new ActivitySource ( "test.activity" , "1.0.0" ) ;
516
+ using var activity = source . StartActivity ( ) ;
517
+ Assert . NotNull ( Activity . Current ) ;
518
+
519
+ var ( logger , sink ) = SetUp ( LogLevel . Trace ) ;
520
+ logger . LogInformation ( "Hello trace and span!" ) ;
521
+
522
+ var evt = Assert . Single ( sink . Writes ) ;
523
+
524
+ Assert . Equal ( Activity . Current . TraceId , evt . TraceId ) ;
525
+ Assert . Equal ( Activity . Current . SpanId , evt . SpanId ) ;
526
+ }
496
527
}
0 commit comments