11using Serilog ;
22using Serilog . Sinks . SystemConsole . Themes ;
33using System ;
4- using System . Threading ;
54using System . Threading . Tasks ;
65
7- namespace SyncWritesDemo ;
6+ Console . WriteLine ( "A sample of how to sync writes to the console sink." ) ;
87
9- public static class Program
8+ if ( args is { Length : 1 } )
109{
11- public static void Main ( string [ ] args )
10+ switch ( args [ 0 ] )
1211 {
13- Console . WriteLine ( "A sample of how to sync writes to the console sink." ) ;
14-
15- if ( args != null && args . Length == 1 )
16- {
17- switch ( args [ 0 ] )
18- {
19- case "--sync-root-default" :
20- SystemConsoleSyncTest ( syncRootForLogger1 : null , syncRootForLogger2 : null ) ;
21- return ;
22- case "--sync-root-separate" :
23- SystemConsoleSyncTest ( syncRootForLogger1 : new object ( ) , syncRootForLogger2 : new object ( ) ) ;
24- return ;
25- case "--sync-root-same" :
26- var sameSyncRoot = new object ( ) ;
27- SystemConsoleSyncTest ( syncRootForLogger1 : sameSyncRoot , syncRootForLogger2 : sameSyncRoot ) ;
28- return ;
29- }
30- }
31-
32- Console . WriteLine ( "Expecting one of the following arguments:{0}--sync-root-default{0}--sync-root-separate{0}--sync-root-same" , Environment . NewLine ) ;
12+ case "--sync-root-default" :
13+ SystemConsoleSyncTest ( syncRootForLogger1 : null , syncRootForLogger2 : null ) ;
14+ return ;
15+ case "--sync-root-separate" :
16+ SystemConsoleSyncTest ( syncRootForLogger1 : new object ( ) , syncRootForLogger2 : new object ( ) ) ;
17+ return ;
18+ case "--sync-root-same" :
19+ var sameSyncRoot = new object ( ) ;
20+ SystemConsoleSyncTest ( syncRootForLogger1 : sameSyncRoot , syncRootForLogger2 : sameSyncRoot ) ;
21+ return ;
3322 }
23+ }
3424
35- static void SystemConsoleSyncTest ( object syncRootForLogger1 , object syncRootForLogger2 )
36- {
37- var logger1 = new LoggerConfiguration ( )
38- . MinimumLevel . Verbose ( )
39- . Enrich . WithProperty ( "Logger" , "logger1" )
40- . WriteTo . Console ( theme : SystemConsoleTheme . Literate , syncRoot : syncRootForLogger1 )
41- . CreateLogger ( ) ;
25+ Console . WriteLine ( "Expecting one of the following arguments:{0}--sync-root-default{0}--sync-root-separate{0}--sync-root-same" , Environment . NewLine ) ;
4226
43- var logger2 = new LoggerConfiguration ( )
44- . MinimumLevel . Verbose ( )
45- . Enrich . WithProperty ( "Logger" , "logger2" )
46- . WriteTo . Console ( theme : SystemConsoleTheme . Literate , syncRoot : syncRootForLogger2 )
47- . CreateLogger ( ) ;
27+ static void SystemConsoleSyncTest ( object syncRootForLogger1 , object syncRootForLogger2 )
28+ {
29+ var logger1 = new LoggerConfiguration ( )
30+ . MinimumLevel . Verbose ( )
31+ . Enrich . WithProperty ( "Logger" , "logger1" )
32+ . WriteTo . Console ( theme : SystemConsoleTheme . Literate , syncRoot : syncRootForLogger1 )
33+ . CreateLogger ( ) ;
4834
49- var options = new ParallelOptions { MaxDegreeOfParallelism = 8 } ;
50- Parallel . For ( 0 , 1000 , options , ( i , loopState ) =>
51- {
52- var logger = ( i % 2 == 0 ) ? logger1 : logger2 ;
53- logger . Information ( "Event {Iteration} generated by {ThreadId}" , i , Thread . CurrentThread . ManagedThreadId ) ;
54- } ) ;
55- }
56- }
35+ var logger2 = new LoggerConfiguration ( )
36+ . MinimumLevel . Verbose ( )
37+ . Enrich . WithProperty ( "Logger" , "logger2" )
38+ . WriteTo . Console ( theme : SystemConsoleTheme . Literate , syncRoot : syncRootForLogger2 )
39+ . CreateLogger ( ) ;
40+
41+ var options = new ParallelOptions { MaxDegreeOfParallelism = 8 } ;
42+ Parallel . For ( 0 , 1000 , options , ( i , _ ) =>
43+ {
44+ var logger = i % 2 == 0 ? logger1 : logger2 ;
45+ logger . Information ( "Event {Iteration} generated by {ThreadId}" , i , Environment . CurrentManagedThreadId ) ;
46+ } ) ;
47+ }
0 commit comments