@@ -47,6 +47,7 @@ public class Log4NetTextFormatter : ITextFormatter
4747 private const string MachineNamePropertyName = "MachineName" ;
4848
4949 private readonly Log4NetTextFormatterOptions _options ;
50+ private readonly bool _usesLog4JCompatibility ;
5051
5152 /// <summary>
5253 /// Initialize a new instance of the <see cref="Log4NetTextFormatter"/> class.
@@ -64,6 +65,7 @@ public Log4NetTextFormatter(Action<Log4NetTextFormatterOptionsBuilder>? configur
6465 var optionsBuilder = new Log4NetTextFormatterOptionsBuilder ( ) ;
6566 configureOptions ? . Invoke ( optionsBuilder ) ;
6667 _options = optionsBuilder . Build ( ) ;
68+ _usesLog4JCompatibility = ReferenceEquals ( Log4NetTextFormatterOptionsBuilder . Log4JXmlNamespace , _options . XmlNamespace ) ;
6769 }
6870
6971 /// <summary>
@@ -82,11 +84,11 @@ public void Format(LogEvent logEvent, TextWriter output)
8284 {
8385 throw new ArgumentNullException ( nameof ( output ) ) ;
8486 }
85- var xmlWriterOutput = UsesLog4JCompatibility ? new StringWriter ( ) : output ;
87+ var xmlWriterOutput = _usesLog4JCompatibility ? new StringWriter ( ) : output ;
8688 using var writer = XmlWriter . Create ( xmlWriterOutput , _options . XmlWriterSettings ) ;
8789 WriteEvent ( logEvent , writer ) ;
8890 writer . Flush ( ) ;
89- if ( UsesLog4JCompatibility )
91+ if ( _usesLog4JCompatibility )
9092 {
9193 // log4j writes the XML "manually", see https://github.com/apache/log4j/blob/v1_2_17/src/main/java/org/apache/log4j/xml/XMLLayout.java#L137-L145
9294 // The resulting XML is impossible to write with a standard compliant XML writer such as XmlWriter.
@@ -101,8 +103,6 @@ public void Format(LogEvent logEvent, TextWriter output)
101103 output . Write ( _options . XmlWriterSettings . NewLineChars ) ;
102104 }
103105
104- private bool UsesLog4JCompatibility => ReferenceEquals ( Log4NetTextFormatterOptionsBuilder . Log4JXmlNamespace , _options . XmlNamespace ) ;
105-
106106 /// <summary>
107107 /// Write the log event into the XML writer.
108108 /// </summary>
@@ -113,7 +113,7 @@ private void WriteEvent(LogEvent logEvent, XmlWriter writer)
113113 {
114114 WriteStartElement ( writer , "event" ) ;
115115 WriteEventAttribute ( logEvent , writer , "logger" , Constants . SourceContextPropertyName ) ;
116- var timestamp = UsesLog4JCompatibility ? XmlConvert . ToString ( logEvent . Timestamp . ToUnixTimeMilliseconds ( ) ) : XmlConvert . ToString ( logEvent . Timestamp ) ;
116+ var timestamp = _usesLog4JCompatibility ? XmlConvert . ToString ( logEvent . Timestamp . ToUnixTimeMilliseconds ( ) ) : XmlConvert . ToString ( logEvent . Timestamp ) ;
117117 writer . WriteAttributeString ( "timestamp" , timestamp ) ;
118118 writer . WriteAttributeString ( "level" , LogLevel ( logEvent . Level ) ) ;
119119 WriteEventAttribute ( logEvent , writer , "thread" , ThreadIdPropertyName ) ;
@@ -382,7 +382,7 @@ private void WriteException(LogEvent logEvent, XmlWriter writer)
382382 var formattedException = FormatException ( exception ) ;
383383 if ( formattedException != null )
384384 {
385- var elementName = UsesLog4JCompatibility ? "throwable" : "exception" ;
385+ var elementName = _usesLog4JCompatibility ? "throwable" : "exception" ;
386386 WriteContent ( writer , elementName , formattedException ) ;
387387 }
388388 }
0 commit comments