Releases: serilog-contrib/serilog-formatting-log4net
Releases · serilog-contrib/serilog-formatting-log4net
Version 1.3.1
- Log events coming from
Microsoft.Extensions.Logging
are now identified if they have either anEventId.Id
or anEventId.Name
property. Previously, log events coming fromMicrosoft.Extensions.Logging
were identified if they had both anId
and aName
property.
Version 1.3.0
- The formatting of the
message
XML element has changed. If a log event is coming fromMicrosoft.Extensions.Logging
, then the message is now formatted by switching off quoting of strings. The formatting of properties remains unchanged.
Before (1.2.0)
<event logger="Microsoft.EntityFrameworkCore.Database.Command" timestamp="2003-01-04T15:09:26.535+01:00" level="INFO">
<properties>
<data name="elapsed" value="10" />
<!-- ... -->
<data name="EventId.Id" value="20101" />
<data name="EventId.Name" value="Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted" />
</properties>
<message>Executed DbCommand ("10"ms) [Parameters=[""], CommandType='Text', CommandTimeout='30']"
""SELECT COUNT(*) FROM \"sqlite_master\" WHERE \"type\" = 'table' AND \"rootpage\" IS NOT NULL;"</message>
</event>
After (1.3.0)
<event logger="Microsoft.EntityFrameworkCore.Database.Command" timestamp="2003-01-04T15:09:26.535+01:00" level="INFO">
<properties>
<data name="elapsed" value="10" />
<!-- ... -->
<data name="EventId.Id" value="20101" />
<data name="EventId.Name" value="Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted" />
</properties>
<message>Executed DbCommand (10ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT COUNT(*) FROM "sqlite_master" WHERE "type" = 'table' AND "rootpage" IS NOT NULL;</message>
</event>
- The message formatting behaviour can be configured with the new
UseMessageFormatter()
method of the options' builder. For example, all log events with theUppercaseMessage
property set totrue
can have their messages uppercased.
var formatter = new Log4NetTextFormatter(options => options.UseMessageFormatter((logEvent, formatProvider) =>
{
if (logEvent.Properties.TryGetValue("UppercaseMessage", out var up) && up is ScalarValue { Value: true })
{
return logEvent.RenderMessage(formatProvider).ToUpperInvariant();
}
return logEvent.RenderMessage(formatProvider);
}));
Version 1.2.0
- Add support for .NET 8 and mark
Serilog.Formatting.Log4Net
as trimmable for AOT compatibility.
Version 1.1.0
- Add support for caller information (class, method, file, line) through the Serilog.Enrichers.WithCaller package.
Version 1.0.2
- Add a new
Log4NetTextFormatter.Log4JFormatter
static property which is configured for the log4j XML layout. This static property is also useful when using the Serilog.Settings.Configuration package where it can be used with the following accessor:
Serilog.Formatting.Log4Net.Log4NetTextFormatter::Log4JFormatter, Serilog.Formatting.Log4Net
Version 1.0.1
- Add support for .NET 6. It will be beneficial for string interpolation which is used extensively through the project. See Are there benefits in producing a .NET 6.0 version of a .NET Standard 2.0 library? on Stack Overflow.
Version 1.0.0
- First final version (i.e. non pre-release) which is identical to 1.0.0-rc.4
Version 1.0.0-rc.4
- Add README and release notes (link to https://github.com/serilog-contrib/serilog-formatting-log4net/blob/main/CHANGELOG.md) in the NuGet package
Version 1.0.0-rc.3
- Replace
UseLog4NetXmlNamespace(null)
withUseNoXmlNamespace()
- Reduce the public API surface
- Removed all property getters on
Log4NetTextFormatterOptionsBuilder
- Converted the
LineEndingExtensions
class from public to internal
- Removed all property getters on
- Improve log4j compatibility mode: don't write the
xmlns:log4j
attribute to be exactly compatible with log4j
Before (1.0.0-rc.2):
<log4j:event timestamp="1041689366535" level="INFO" xmlns:log4j="http://jakarta.apache.org/log4j/">
<log4j:message><![CDATA[Hello from Serilog]]></log4j:message>
</log4j:event>
After (1.0.0-rc.3)
<log4j:event timestamp="1041689366535" level="INFO">
<log4j:message><![CDATA[Hello from Serilog]]></log4j:message>
</log4j:event>
Version 1.0.0-rc.2
- Handle non Serilog provided
LogEventPropertyValue
subclasses - The
Log4NetTextFormatterOptionsBuilder
constructor is now internal - Include the index in the property name when formatting a SequenceValue
Before (1.0.0-rc.1):
<log4net:data name="Args" value="--first-argument" />
<log4net:data name="Args" value="--second-argument" />
After (1.0.0-rc.2)
<log4net:data name="Args[0]" value="--first-argument" />
<log4net:data name="Args[1]" value="--second-argument" />
- Documentation has been improved