使用Nlog并以json格式写入文件 [英] using Nlog and writing to file as json

查看:214
本文介绍了使用Nlog并以json格式写入文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想我丢失了一些东西,因为我似乎无法弄清楚如何使用配置文件中的NLog设置将其写入json格式的日志文件中.直线滚动文件可以正常工作,但不能使用json. json目标仅输出消息(不在json中).

I think I'm missing something as I can't seem to figure out how to have it write to a log file in json format using NLog setup in configuration file. The straight rolling file works fine, but not the json. The json target only outputs the message (not in json).

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">        
    <targets async="true">
      <target xsi:type="File" name="rollingFile" fileName="${basedir}/logs/${shortdate}.log" archiveFileName="${basedir}/logs/{shortdate}_Archive{###}.log" archiveAboveSize="1000000" archiveNumbering="Sequence" layout="${longdate} ${uppercase:${level}} ${callsite} ${message}" />
      <target xsi:type="File" 
              name="rollingFileJson" 
              fileName="${basedir}/logs/${shortdate}.json" 
              archiveFileName="${basedir}/logs/{shortdate}_Archive{###}.json" 
              archiveAboveSize="1000000" 
              archiveNumbering="Sequence" 
              layout="${json-encode} ${message}">
      </target>

    </targets>
    <rules>
      <logger name="*" minlevel="Trace" writeTo="rollingFile" />
      <logger name="*" minlevel="Trace" writeTo="rollingFileJson" />
    </rules>
  </nlog>

推荐答案

从NLog 4.0.0版本开始,可以使用将事件呈现为结构化JSON文档的布局.

As of the release of NLog 4.0.0 it is possible to use a layout that renders events as structured JSON documents.

示例取自 NLog项目站点:

<target name="jsonFile" xsi:type="File" fileName="${logFileNamePrefix}.json">
    <layout xsi:type="JsonLayout">
        <attribute name="time" layout="${longdate}" />
        <attribute name="level" layout="${level:upperCase=true}"/>
        <attribute name="message" layout="${message}" />
    </layout>
</target>

修改: 您也可以在代码中创建它.

You can also create it in code.

此处是文档特定部分的链接.

Here is the link to the specific part of documentation.

这是复制的示例:

var jsonLayout = new JsonLayout
{
    Attributes =
    {
        new JsonAttribute("type", "${exception:format=Type}"),
        new JsonAttribute("message", "${exception:format=Message}"),
        new JsonAttribute("innerException", new JsonLayout
        {

            Attributes =
            {
                new JsonAttribute("type", "${exception:format=:innerFormat=Type:MaxInnerExceptionLevel=1:InnerExceptionSeparator=}"),
                new JsonAttribute("message", "${exception:format=:innerFormat=Message:MaxInnerExceptionLevel=1:InnerExceptionSeparator=}"),
            }
        },
        //don't escape layout
        false)
    }
};

有关更多信息,请阅读文档.

For more info read the docs.

这篇关于使用Nlog并以json格式写入文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆