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\"格式" }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM