关于.net core中NLog的日志结构化

0、最近研究serilog结构化日志,感觉这玩意主要是在代码中配置,配置文件中配置的功能比较坑爹,所以还是搞一搞nlog的结构化吧,感觉serilog不是很靠谱的样子,个人还是喜欢从配置文件中配置。可能是之前用log4net遗留下来的习惯吧。。。。。。

1、nlog.config配置文件格式

 

<target xsi:type="File" name="allfile" fileName="nlog-AspNetCore-all-${shortdate}.log">
      <layout xsi:type="JsonLayout" includeEventProperties="false" >
        <attribute name="time" layout="${longdate}"/>
        <attribute name="level" layout="${level:upperCase=true}"/>
        <attribute name="message" encode="false" layout="${message}" />
      </layout>
      
    </target>

2、日志结构化的语法

User user = new User() { Name = "zmy", Age = 18 };
            Person person = new Person() { Name = "test", Age = 20 };
            _logOpe.LogError("测试{@user}",user);

 

 

3、关于结构化的一些配置的属性信息

 

(1)、Attribute属性:

 

  • name - 必需。JSON 密钥的名称
  • layout - JSON 值的布局(可以是嵌套的 JsonLayout)
  • encode - 为属性启用或禁用 JSON 编码。默认值 = 真

    在 NLog 4.1 中引入

  • escapeUnicode - 使用 \u 转义 unicode 字符(非 ascii)。默认值 = 真

    在 NLog 4.4.7 中引入

  • IncludeEmptyValue - 布局输出为空时包括属性。默认值 = 假

    在 NLog 4.5 中引入

  • EscapeForwardSlash - 是否也应该转义正斜杠。默认值 = false,

    在 NLog 4.6.8 中引入。在NLog 4.7之前,它没有从父级继承值。在 NLog 5.0 之前,默认值为 true   

 

 

(2)、外层layout属性

  • suppressSpaces - 启用此选项可抑制输出 JSON 中的额外空格。默认情况下处于禁用状态。

    在 NLog 4.1 中引入

  • renderEmptyObject - 获取或设置用于呈现空对象值的选项,默认值 。{}true

    NLog 4.3.7 中引入

  • IncludeGdc - 指示是否包含 GlobalDiagnosticsContext (GDC) 字典的内容。布尔

    在 NLog 4.4.10 中引入

  • IncludeEventProperties - 包括日志事件的所有事件属性?默认:false

    在 NLog 5.0 选项被命名为 IncludeAllProperties 之前

  • IncludeScopeProperties - 指示是否包括范围上下文属性字典。默认:false

    在 NLog 5.0 选项被命名为 IncludeMdlc 或 IncludeMdc 之前

  • excludeProperties - 以逗号分隔的字符串,其中包含要排除的属性的名称。仅当包含事件属性为 时才使用。不区分大小写。默认值为空 当名称包含逗号时,请用单引号将值括起来。例如.true'value,withquote',value2

    在 NLog 4.4 中引入

  • excludeEmptyProperties - 排除值为 null 或空的事件属性(还检查 GDC、MDC、MDLC)。

    NLog 4.7.7 中引入

  • EscapeUnicode - 转义非 ascii 字符?布尔。默认:true

    在 NLog 4.4.7 中引入

  • MaxRecursionLimit - JSON 序列化程序在退出之前应遵循对象引用多远。整数。默认值(0 = 无对象反射)1

    在 NLog 4.5 中引入。在 NLog 5.0 之前,默认值为(无对象反射)0

  • EscapeForwardSlash - 是否应该对正斜杠进行转义?如果为 true,将转换为 。默认/\/false

    在 NLog 4.6.8 中引入。在 NLog 5.0 之前,默认值为true

 

posted @ 2022-03-24 22:55  混子程序员ZMY  阅读(263)  评论(0编辑  收藏  举报