log4net
编辑log4net编辑
此布局实现将 log4net 事件格式化为符合 Elastic 通用模式规范的 JSON 表示形式。
安装编辑
添加对 Elastic.CommonSchema.Log4net 包的引用
<PackageReference Include="Elastic.CommonSchema.Log4net" Version="8.6.0" />
用法编辑
使用配置进行设置编辑
在附加程序的配置中指定布局类型
<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>
以编程方式进行设置编辑
var hierarchy = (Hierarchy)LogManager.CreateRepository(Guid.NewGuid().ToString()); var appender = new ConsoleAppender { Layout = new EcsLayout() }; // Use the ECS layout. hierarchy.Root.AddAppender(appender); hierarchy.Root.Level = Level.All; hierarchy.Configured = true;
然后,Layout = new EcsLayout()
行指示 log4net 使用 ECS 布局。上面的示例使用了控制台附加程序,但是您可以自由使用您选择的任何附加程序,例如考虑使用文件系统目标和 Elastic Filebeat 来实现持久且可靠的摄取。
ECS 感知属性编辑
任何在 LogTemplateProperties.*
下可用的有效 ECS 日志模板属性,例如 LogTemplateProperties.TraceId
,都受支持,并将直接设置相应的 ECS 字段。
输出编辑
除了 必填字段 之外,输出还包含其他数据
-
log.origin.file.name
取自LocationInformation
-
log.origin.file.line
取自LocationInformation
-
log.origin.function
取自LocationInformation
-
event.created
取自时间戳 -
event.timezone
等于本地时区 -
host.hostname
取自HostName
属性 -
process.thread.id
取自ThreadName
(如果其具有数值) -
process.thread.name
取自ThreadName
(如果其不具有数值) -
service.name
取自入口或调用程序集 -
service.version
取自入口或调用程序集 -
error.message
取自ExceptionObject
-
error.type
取自ExceptionObject
-
error.stacktrace
取自ExceptionObject
-
metadata
取自属性。它还包含消息模板和参数(如果记录了格式化消息)
示例日志事件输出(为了易读性而格式化)
{ "@timestamp": "2022-08-28T14:06:28.5121651+02:00", "log.level": "INFO", "message": "Hi! Welcome to example!", "metadata": { "global_property": "Example", "message_template": "{0}! Welcome to example!" "0": "Hi" }, "ecs": { "version": "8.3.1" }, "event": { "timezone": "Central European Time", "created": "2022-08-28T14:06:28.5121651+02:00" }, "host": { "hostname": "HGU780D3" }, "log": { "logger": "Elastic.CommonSchema.Log4net.Example.Program", "original": null, "origin": { "file": { "name": "C:\\Development\\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" } }