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