86 lines
5.0 KiB
XML
86 lines
5.0 KiB
XML
<?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="Warn"
|
||
internalLogFile="${basedir}/logs/nlog-internal.log">
|
||
<!-- 所有服务共用本配置。服务启动时写入 SERVICE_NAME;INSTANCE_ID 区分同服务的多个容器。 -->
|
||
<variable name="service" value="${environment:variable=SERVICE_NAME}" />
|
||
<variable name="instance" value="${environment:variable=INSTANCE_ID}" />
|
||
<variable name="logDirectory" value="${basedir}/logs/${shortdate}" />
|
||
<variable name="layout" value="${longdate}|service=${var:service}|instance=${var:instance}|${uppercase:${level}}|${logger}|${message}${onexception:inner= ${exception:format=tostring}}" />
|
||
|
||
<!-- 日志输出开关:true=开启,false=关闭。保存文件后 NLog 会自动重载。 -->
|
||
<variable name="enableDebug" value="true" />
|
||
<variable name="enableInfo" value="true" />
|
||
<variable name="enableWarn" value="true" />
|
||
<variable name="enableError" value="true" />
|
||
<variable name="enableCap" value="true" />
|
||
<variable name="enableSocket" value="true" />
|
||
<variable name="enableFishSpawn" value="true" />
|
||
<variable name="enableConsole" value="true" />
|
||
|
||
<targets async="true">
|
||
<target xsi:type="File" name="debugFile" fileName="${var:logDirectory}/${var:service}-${var:instance}-debug.log" layout="${var:layout}" />
|
||
<target xsi:type="File" name="infoFile" fileName="${var:logDirectory}/${var:service}-${var:instance}-info.log" layout="${var:layout}" />
|
||
<target xsi:type="File" name="warnFile" fileName="${var:logDirectory}/${var:service}-${var:instance}-warn.log" layout="${var:layout}" />
|
||
<target xsi:type="File" name="errorFile" fileName="${var:logDirectory}/${var:service}-${var:instance}-error.log" layout="${var:layout}" />
|
||
<target xsi:type="File" name="capFile" fileName="${var:logDirectory}/${var:service}-${var:instance}-cap.log" layout="${var:layout}" />
|
||
<target xsi:type="File" name="socketFile" fileName="${var:logDirectory}/${var:service}-${var:instance}-socket.log" layout="${var:layout}" />
|
||
<target xsi:type="File" name="fishSpawnFile" fileName="${var:logDirectory}/${var:service}-${var:instance}-fishspawn.log" layout="${var:layout}" />
|
||
<target xsi:type="Console" name="console" layout="${var:layout}" />
|
||
<target xsi:type="Null" name="blackhole" />
|
||
</targets>
|
||
|
||
<rules>
|
||
<!-- 屏蔽 ASP.NET Core 自动生成的 API 请求/路由/MVC/CORS 流水日志,仅保留 Warn 及以上。 -->
|
||
<logger name="Microsoft.AspNetCore.*" maxlevel="Info" writeTo="blackhole" final="true" />
|
||
|
||
<!-- CAP 单独输出,避免与普通业务日志混杂。 -->
|
||
<logger name="DotNetCore.CAP.*" minlevel="Debug" writeTo="capFile" final="true">
|
||
<filters defaultAction="Log">
|
||
<when condition="'${var:enableCap}' != 'true'" action="Ignore" />
|
||
</filters>
|
||
</logger>
|
||
|
||
<!-- Socket/SignalR 日志单独留档,同时继续进入对应级别文件。 -->
|
||
<logger name="*" minlevel="Debug" writeTo="socketFile">
|
||
<filters defaultAction="Ignore">
|
||
<when condition="'${var:enableSocket}' != 'true'" action="Ignore" />
|
||
<when condition="contains('${message:raw=true}', '[Socket]')" action="Log" />
|
||
</filters>
|
||
</logger>
|
||
<logger name="*.Hubs.*" minlevel="Debug" writeTo="socketFile">
|
||
<filters defaultAction="Log"><when condition="'${var:enableSocket}' != 'true'" action="Ignore" /></filters>
|
||
</logger>
|
||
<logger name="*MovementFilter" minlevel="Debug" writeTo="socketFile">
|
||
<filters defaultAction="Log"><when condition="'${var:enableSocket}' != 'true'" action="Ignore" /></filters>
|
||
</logger>
|
||
|
||
<!-- 出鱼数据独立留档,不受普通 Info 开关影响。 -->
|
||
<logger name="*" minlevel="Info" writeTo="fishSpawnFile">
|
||
<filters defaultAction="Ignore">
|
||
<when condition="'${var:enableFishSpawn}' != 'true'" action="Ignore" />
|
||
<when condition="contains('${message:raw=true}', '[FishSpawnData]')" action="Log" />
|
||
</filters>
|
||
</logger>
|
||
|
||
<!-- 四个级别分别输出;Error 文件同时接收 Critical/Fatal。 -->
|
||
<logger name="*" level="Debug" writeTo="debugFile">
|
||
<filters defaultAction="Log"><when condition="'${var:enableDebug}' != 'true'" action="Ignore" /></filters>
|
||
</logger>
|
||
<logger name="*" level="Info" writeTo="infoFile">
|
||
<filters defaultAction="Log"><when condition="'${var:enableInfo}' != 'true'" action="Ignore" /></filters>
|
||
</logger>
|
||
<logger name="*" level="Warn" writeTo="warnFile">
|
||
<filters defaultAction="Log"><when condition="'${var:enableWarn}' != 'true'" action="Ignore" /></filters>
|
||
</logger>
|
||
<logger name="*" minlevel="Error" writeTo="errorFile">
|
||
<filters defaultAction="Log"><when condition="'${var:enableError}' != 'true'" action="Ignore" /></filters>
|
||
</logger>
|
||
<logger name="*" minlevel="Info" writeTo="console">
|
||
<filters defaultAction="Log"><when condition="'${var:enableConsole}' != 'true'" action="Ignore" /></filters>
|
||
</logger>
|
||
</rules>
|
||
</nlog>
|