@@ -47,6 +47,7 @@ public class Log4NetTextFormatter : ITextFormatter
47
47
private const string MachineNamePropertyName = "MachineName" ;
48
48
49
49
private readonly Log4NetTextFormatterOptions _options ;
50
+ private readonly bool _usesLog4JCompatibility ;
50
51
51
52
/// <summary>
52
53
/// Initialize a new instance of the <see cref="Log4NetTextFormatter"/> class.
@@ -64,6 +65,7 @@ public Log4NetTextFormatter(Action<Log4NetTextFormatterOptionsBuilder>? configur
64
65
var optionsBuilder = new Log4NetTextFormatterOptionsBuilder ( ) ;
65
66
configureOptions ? . Invoke ( optionsBuilder ) ;
66
67
_options = optionsBuilder . Build ( ) ;
68
+ _usesLog4JCompatibility = ReferenceEquals ( Log4NetTextFormatterOptionsBuilder . Log4JXmlNamespace , _options . XmlNamespace ) ;
67
69
}
68
70
69
71
/// <summary>
@@ -82,11 +84,11 @@ public void Format(LogEvent logEvent, TextWriter output)
82
84
{
83
85
throw new ArgumentNullException ( nameof ( output ) ) ;
84
86
}
85
- var xmlWriterOutput = UsesLog4JCompatibility ? new StringWriter ( ) : output ;
87
+ var xmlWriterOutput = _usesLog4JCompatibility ? new StringWriter ( ) : output ;
86
88
using var writer = XmlWriter . Create ( xmlWriterOutput , _options . XmlWriterSettings ) ;
87
89
WriteEvent ( logEvent , writer ) ;
88
90
writer . Flush ( ) ;
89
- if ( UsesLog4JCompatibility )
91
+ if ( _usesLog4JCompatibility )
90
92
{
91
93
// 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
92
94
// 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)
101
103
output . Write ( _options . XmlWriterSettings . NewLineChars ) ;
102
104
}
103
105
104
- private bool UsesLog4JCompatibility => ReferenceEquals ( Log4NetTextFormatterOptionsBuilder . Log4JXmlNamespace , _options . XmlNamespace ) ;
105
-
106
106
/// <summary>
107
107
/// Write the log event into the XML writer.
108
108
/// </summary>
@@ -113,7 +113,7 @@ private void WriteEvent(LogEvent logEvent, XmlWriter writer)
113
113
{
114
114
WriteStartElement ( writer , "event" ) ;
115
115
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 ) ;
117
117
writer . WriteAttributeString ( "timestamp" , timestamp ) ;
118
118
writer . WriteAttributeString ( "level" , LogLevel ( logEvent . Level ) ) ;
119
119
WriteEventAttribute ( logEvent , writer , "thread" , ThreadIdPropertyName ) ;
@@ -382,7 +382,7 @@ private void WriteException(LogEvent logEvent, XmlWriter writer)
382
382
var formattedException = FormatException ( exception ) ;
383
383
if ( formattedException != null )
384
384
{
385
- var elementName = UsesLog4JCompatibility ? "throwable" : "exception" ;
385
+ var elementName = _usesLog4JCompatibility ? "throwable" : "exception" ;
386
386
WriteContent ( writer , elementName , formattedException ) ;
387
387
}
388
388
}
0 commit comments