zoukankan      html  css  js  c++  java
  • NLog配置JsonLayout中文输出为unicode问题

      日志输出现要改为json格式,网上查询layout配置为JsonLayout就可以了,结果发现输出中文为unicode编码,看很多文章说配置encode="false"就可以了,结果配置后是显示中文,但没有了双引号,和内容中包括双引号的话直接输出,不是json格式了。后面仔细查看了官方文档,发现原来有些文章略有不对,中文输出是解决了,但都不是json格式了。

           官方参数解释如下:   

    • encode - Enable or disable JSON encoding for the attribute. Enabled by default.(翻译为“该属性启用或禁用JSON编码。 默认情况下启用。”)

          所以把此项设为false的话就不是json格式了,看文档还有其他参数,有一项escapeUnicode参数貌似是对的

    • escapeUnicode - Escape unicode-characters (non-ascii) using u. Enabled by default.(翻译为“使用 u转义unicode-characters(非ascii)。 默认情况下启用。”)

         设置此项为false后中文显示正常,编码也正常了。

        完整的设置如下:

    <layout xsi:type="JsonLayout">
            <attribute name="Level" layout="${level:upperCase=true}"/>
            <attribute name="Time" layout="${longdate}" />
            <attribute name="Tag" layout="${callsite:className=true:methodName=true:skipFrames=1}" />
            <attribute name="Msg" layout="${message}" escapeUnicode="false"  />
          </layout>

    测试输出格式:

    { "Level": "INFO", "Time": "2019-03-25 15:18:38.0199", "Tag": "SysWebTest.Controllers.HomeController.Index", "Msg": "测试日志"1111"格式" }

  • 相关阅读:
    【Auto.js images.matchTemplate() 函数的特点】
    Jquery动态bind绑定已有函数,函数自动执行的问题解决方法
    浅谈javascript的运行机制
    Git
    下拉框的点击事件
    点击其他区域菜单消失
    Chrome 中的 JavaScript 断点设置和调试技巧
    前端编辑工具有感
    我的jsonp跨域问题
    浅谈Json和jsonp
  • 原文地址:https://www.cnblogs.com/dangzhensheng/p/10593951.html
Copyright © 2011-2022 走看看