1- using NUnit . Framework ;
1+ using System ;
2+ using NUnit . Framework ;
3+ using Serilog ;
4+ using Serilog . Configuration ;
5+ using Serilog . Core ;
6+ using Serilog . Events ;
27using ServiceStack . Logging . Serilog ;
38
49namespace ServiceStack . Logging . Tests . UseCases
510{
611 [ TestFixture ]
712 public class UsingSerilog
813 {
9- [ Test ]
10- public void SerilogUseCase ( )
14+ private void TestLog ( )
1115 {
12- LogManager . LogFactory = new SerilogFactory ( ) ;
1316 var log = LogManager . GetLogger ( GetType ( ) ) ;
1417
1518 log . Debug ( "Debug Event Log Entry." ) ;
@@ -18,5 +21,50 @@ public void SerilogUseCase()
1821 log . Error ( "Error Event Log Entry." ) ;
1922 log . Fatal ( "Fatal Event Log Entry." ) ;
2023 }
24+
25+ [ Test ]
26+ public void Use_default_SerilogFactory ( )
27+ {
28+ LogManager . LogFactory = new SerilogFactory ( ) ;
29+ TestLog ( ) ;
30+ }
31+
32+
33+
34+ [ Test ]
35+ public void Use_Serilog_with_custom_configuration_and_sink ( )
36+ {
37+ LogManager . LogFactory = new SerilogFactory ( new LoggerConfiguration ( )
38+ . WriteTo . MySink ( )
39+ . CreateLogger ( ) ) ;
40+
41+ TestLog ( ) ;
42+ }
43+ }
44+
45+ public class MySink : ILogEventSink
46+ {
47+ private readonly IFormatProvider formatProvider ;
48+
49+ public MySink ( IFormatProvider formatProvider )
50+ {
51+ this . formatProvider = formatProvider ;
52+ }
53+
54+ public void Emit ( LogEvent logEvent )
55+ {
56+ var message = logEvent . RenderMessage ( formatProvider ) ;
57+ Console . WriteLine ( DateTimeOffset . Now + " " + message ) ;
58+ }
59+ }
60+
61+ public static class MySinkExtensions
62+ {
63+ public static LoggerConfiguration MySink (
64+ this LoggerSinkConfiguration loggerConfiguration ,
65+ IFormatProvider formatProvider = null )
66+ {
67+ return loggerConfiguration . Sink ( new MySink ( formatProvider ) ) ;
68+ }
2169 }
2270}
0 commit comments