NOTICE: this repository is now part of the ECS .NET integration repository
log4net layout to format log events into a JSON representation that adheres to Elastic Common Schema specification.
Specify layout type in appender's configuration:
<log4net>
<root>
<level value="INFO" />
<appender-ref ref="ConsoleAppender" />
</root>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="Elastic.CommonSchema.log4net.EcsLayout, Elastic.CommonSchema.log4net" />
</appender>
</log4net>See sample application for reference.
Apart from mandatory fields, the output contains additional data:
log.origin.file.nameis taken fromLocationInformationlog.origin.file.lineis taken fromLocationInformationlog.origin.functionis taken fromLocationInformationevent.createdis taken from timestampevent.timezoneis equal to local timezonehost.hostnameis taken fromHostNamepropertyprocess.thread.idis taken fromThreadNameif it has numeric valueprocess.thread.nameis taken fromThreadNameif it doesn't have numeric valueservice.nameis taken from entry or calling assemblyservice.versionis taken from entry or calling assemblyerror.messageis taken fromExceptionObjecterror.typeis taken fromExceptionObjecterror.stacktraceis taken fromExceptionObjectmetadatais taken from properties
Sample log event output (formatted for readability):
{
"@timestamp": "2022-07-31T03:50:06.3881419+02:00",
"log.level": "INFO",
"message": "Welcome to example!",
"metadata": {
"global_property": "Example"
},
"ecs": {
"version": "1.5.0"
},
"event": {
"timezone": "Central European Time",
"created": "2022-08-01T14:06:28.5121651+02:00"
},
"host": {
"hostname": "DESKTOP-GB7HICV"
},
"log": {
"logger": "Elastic.CommonSchema.log4net.Example.Program",
"original": null,
"origin": {
"file": {
"name": "C:\\Development\\ecs-log4net\\example\\Elastic.CommonSchema.log4net.Example\\Program.cs",
"line": 17
},
"function": "Main"
}
},
"process": {
"thread": {
"id": 1
}
},
"service": {
"name": "Elastic.CommonSchema.log4net.Example",
"version": "1.0.0.0"
}
}