兼容win7版应用
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
3.4 KiB

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
internalLogLevel="Info"
internalLogToConsole="false"
throwConfigExceptions="false">
<!-- 使用Microsoft扩展配置 -->
<variable name="appName" value="${configsetting:item=Application.Name}" />
<variable name="environment" value="${configsetting:item=Application.Environment:default=Development}" />
<!-- 布局模板 -->
<variable name="jsonLayout" value='{
"time": "${longdate}",
"level": "${level}",
"logger": "${logger}",
"message": "${message}",
"exception": "${exception:format=ToString}",
"app": "${appName}",
"env": "${environment}",
"version": "${gdc:item=AppVersion}",
"machine": "${machinename}",
"user": "${environment:variable=USERNAME}",
"threadId": "${threadid}",
"activityId": "${activityid}"
}' />
<variable name="simpleLayout" value="${longdate} | ${level:uppercase=true} | ${logger:shortName=true} | ${message} ${exception:format=ToString}" />
<targets async="true">
<!--控制台目标(开发环境)-->
<target xsi:type="Console"
name="console"
layout="${simpleLayout}"
useErrorStream="false">
<highlight-row condition="level == LogLevel.Error" foregroundColor="Red"/>
<highlight-row condition="level == LogLevel.Warn" foregroundColor="Yellow"/>
</target>
<!--JSON文件目标(生产环境)-->
<target xsi:type="File"
name="jsonFile"
fileName="${specialfolder:folder=LocalApplicationData}/${appName}/logs/log-${shortdate}.json"
layout="${jsonLayout}"
encoding="utf-8"
archiveFileName="${specialfolder:folder=LocalApplicationData}/${appName}/logs/archives/log-{#####}.json"
archiveEvery="Day"
archiveNumbering="Rolling"
maxArchiveFiles="30"
archiveAboveSize="10485760"
keepFileOpen="false">
<header>{ "logs": [</header>
<footer>] }</footer>
<layout xsi:type="JsonLayout">
<attribute name="time" layout="${longdate}" />
<attribute name="level" layout="${level:lowercase=true}" />
<attribute name="logger" layout="${logger}" />
<attribute name="method" layout="${event-properties:item=MethodName}" />
<attribute name="message" layout="${message}" />
<attribute name="exception" layout="${exception:format=ToString}" escapeUnicode="false" />
<attribute name="properties">
<layout type="JsonLayout" includeAllProperties="true" excludeProperties="time,level,logger,message,exception" />
</attribute>
</layout>
</target>
<!--调试窗口-->
<target xsi:type="Debugger"
name="debugger"
layout="${simpleLayout}" />
<!--内存目标(用于UI显示)-->
<target xsi:type="Memory"
name="memory"
layout="${simpleLayout}"
maxLogsCount="1000" />
</targets>
<rules>
<!-- 开发环境规则 -->
<logger name="*" minlevel="Debug" writeTo="console,debugger,memory" if="${configsetting:item=Application.Environment:default=Development} == 'Development'" />
<!-- 生产环境规则 -->
<logger name="*" minlevel="Info" writeTo="jsonFile,memory" if="${configsetting:item=Application.Environment:default=Development} != 'Development'" />
<!-- 错误日志单独处理 -->
<logger name="*" minlevel="Error" writeTo="jsonFile" final="true" />
<logger name="*" minlevel="Warn" writeTo="jsonFile,console" final="true" />
</rules>
</nlog>