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" } }