@@ -14,14 +14,14 @@ public class NLogFormattingSpecs : TestKit.Xunit2.TestKit
1414 private static readonly Config Config = @"akka.loglevel = DEBUG" ;
1515
1616 private readonly ILoggingAdapter _loggingAdapter ;
17- const string ActorSystemName = "my-test-system" ;
17+ const string LogSourceName = "my-test-system" ;
1818
1919 public NLogFormattingSpecs ( ITestOutputHelper helper ) : base ( Config , output : helper )
2020 {
2121 Config myConfig = @"akka.loglevel = DEBUG
2222 akka.loggers=[""Akka.Logger.NLog.NLogLogger, Akka.Logger.NLog""]" ;
2323
24- var system = ActorSystem . Create ( ActorSystemName , myConfig ) ;
24+ var system = ActorSystem . Create ( LogSourceName , myConfig ) ;
2525
2626 _loggingAdapter = Logging . GetLogger ( system . EventStream , system . Name ) ;
2727
@@ -75,11 +75,35 @@ public void LoggingTestWithEventProperties(LogLevel level, string formatStr, obj
7575 Thread . Sleep ( 10 ) ;
7676 }
7777
78- var formattedResultString = string . Format ( resultStr , ActorSystemName ,
78+ var formattedResultString = string . Format ( resultStr , LogSourceName ,
7979 Thread . CurrentThread . ManagedThreadId . ToString ( ) . PadLeft ( 4 , '0' ) ) ;
8080
8181 Assert . NotEmpty ( loggingTarget . Logs ) ;
8282 Assert . Equal ( formattedResultString , loggingTarget . Logs . Last ( ) ) ;
8383 }
84+
85+ [ Theory ]
86+ [ InlineData ( LogLevel . InfoLevel , "test {color} case" , new object [ ] { "Red" } , "test {{color}} case|color=Red, logSource={0}, actorPath={1}, threadId={2}" ) ]
87+ public void LoggingWithStructuredLogging ( LogLevel level , string formatStr , object [ ] formatArgs , string resultStr )
88+ {
89+ var loggingTarget = new global ::NLog . Targets . MemoryTarget { Layout = "${message:raw=true}|${all-event-properties}" } ;
90+ global ::NLog . Config . SimpleConfigurator . ConfigureForTargetLogging ( loggingTarget ) ;
91+
92+ loggingTarget . Logs . Clear ( ) ;
93+ _loggingAdapter . Log ( level , formatStr , formatArgs ) ;
94+
95+ for ( var i = 0 ; i < 100 ; ++ i )
96+ {
97+ if ( loggingTarget . Logs . Count != 0 )
98+ break ;
99+
100+ Thread . Sleep ( 10 ) ;
101+ }
102+
103+ var formattedResultString = string . Format ( resultStr , LogSourceName , TestActor . Path . ToString ( ) , Thread . CurrentThread . ManagedThreadId . ToString ( ) ) ;
104+
105+ Assert . NotEmpty ( loggingTarget . Logs ) ;
106+ Assert . Equal ( formattedResultString , loggingTarget . Logs . Last ( ) ) ;
107+ }
84108 }
85109}
0 commit comments