1 Commits

Author SHA1 Message Date
c679197fa5 new nlog.config file 2026-01-15 22:02:14 +01:00

View File

@@ -1,90 +1,34 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true" autoReload="true"
throwConfigExceptions="true" throwExceptions="false"
internalLogLevel="Warn" internalLogLevel="Off" internalLogFile="c:\temp\internal-apiservice_nlog.txt" >
internalLogFile="logs/nlog-internal.log">
<!-- ========================= -->
<!-- VARIABLES -->
<!-- ========================= -->
<variable name="appName" value="MyApp" />
<variable name="environment" value="${aspnet-environment:whenEmpty=Production}" />
<variable name="logRoot" value="${basedir}/logs" /> <variable name="logDirectory" value="${basedir}\Log\${date:format=yy}\${date:format=MM}"/>
<variable name="year" value="${date:format=yyyy}" />
<variable name="month" value="${date:format=MM}" />
<variable name="day" value="${date:format=dd}" />
<!-- ========================= --> <extensions>
<!-- LAYOUTS --> <add assembly="NLog.Web.AspNetCore"/>
<!-- ========================= --> </extensions>
<layout name="jsonLayout" xsi:type="JsonLayout" includeAllProperties="true">
<attribute name="timestamp" layout="${date:format=o}" />
<attribute name="level" layout="${level}" />
<attribute name="logger" layout="${logger}" />
<attribute name="message" layout="${message}" />
<attribute name="exception" layout="${exception:format=ToString}" />
<attribute name="correlationId" layout="${mdlc:item=CorrelationId}" />
<attribute name="traceId" layout="${activityid}" />
<attribute name="environment" layout="${environment}" />
<attribute name="application" layout="${appName}" />
</layout>
<!-- ========================= -->
<!-- TARGETS -->
<!-- ========================= -->
<targets async="true">
<!-- Console (dev / Docker) -->
<target xsi:type="Console"
name="console"
layout="${jsonLayout}" />
<!-- App log -->
<target xsi:type="File"
name="appFile"
fileName="${logRoot}/${year}/${month}/${day}/app.log"
layout="${jsonLayout}"
concurrentWrites="true"
keepFileOpen="false" />
<!-- Error log -->
<target xsi:type="File"
name="errorFile"
fileName="${logRoot}/${year}/${month}/${day}/error.log"
layout="${jsonLayout}"
concurrentWrites="true"
keepFileOpen="false" />
<!-- Performance log -->
<target xsi:type="File"
name="performanceFile"
fileName="${logRoot}/${year}/${month}/${day}/perf.log"
layout="${jsonLayout}"
concurrentWrites="true"
keepFileOpen="false" />
<targets>
<target name="file" xsi:type="File" fileName="${logDirectory}\Log_${shortdate}.txt" layout="${longdate} [${pad:padding=8:fixedlength=true:PadCharacter=0:inner=${threadid}}] ${operationId} ${pad:padding=-5:fixedlength=true:inner=${level}} ${message}"/>
<target name="requestOnly" xsi:type="File" fileName="${logDirectory}\Requests_${shortdate}.txt" layout="${longdate} [${pad:padding=8:fixedlength=true:PadCharacter=0:inner=${threadid}}] ${pad:padding=-5:fixedlength=true:inner=${level}} ${message}"/>
<target name="fileFull" xsi:type="File" fileName="${logDirectory}\Log_Full_${shortdate}.txt" layout="${longdate} [${pad:padding=8:fixedlength=true:PadCharacter=0:inner=${threadid}}] ${pad:padding=-5:fixedlength=true:inner=${level}} ${pad:padding=36:fixedlength=true:PadCharacter= :inner=${operationId}} [${callsite:className=false:includeNamespace=false:fileName=true:includeSourcePath=false:methodName=true}] ${message}"/>
<target name="RequestResponseOnly" xsi:type="File" fileName="${logDirectory}\RequestResponseOnly_${shortdate}.txt" layout="${longdate} [${pad:padding=8:fixedlength=true:PadCharacter=0:inner=${threadid}}] ${pad:padding=-5:fixedlength=true:inner=${level}} ${pad:padding=36:fixedlength=true:PadCharacter= :inner=${operationId}} ${message}"/>
<target xsi:type="Debugger" name="debugger" layout="NLOG ${longdate} ${level} ${message}" />
<target name="error" xsi:type="File" fileName="${logDirectory}\Log_Error_${shortdate}.txt" layout="${longdate} [${pad:padding=8:fixedlength=true:PadCharacter=0:inner=${threadid}}] ${pad:padding=-5:fixedlength=true:inner=${level}} ${pad:padding=36:fixedlength=true:PadCharacter= :inner=${operationId}} [${callsite:className=false:includeNamespace=false:fileName=true:includeSourcePath=false:methodName=true}] ${message}"/>
</targets> </targets>
<!-- ========================= -->
<!-- RULES (MINIMAL) -->
<!-- ========================= -->
<rules> <rules>
<logger name="RequestResponse" minlevel="Trace" writeTo="RequestResponseOnly" final="true" />
<!-- Normal app flow --> <logger name="*" minlevel="Trace" writeTo="file" />
<logger name="*" minlevel="Info" writeTo="console,appFile" /> <logger name="Request" minlevel="Trace" writeTo="requestOnly" />
<logger name="*" minlevel="Trace" writeTo="fileFull" />
<!-- Errors --> <logger name="*" minlevel="Trace" writeTo="debugger" />
<logger name="*" minlevel="Error" writeTo="errorFile" /> <logger name="*" level="Error" writeTo="error" />
<logger name="Microsoft.EntityFrameworkCore.Database.Command" minlevel="Warn" writeTo="fileFull"/>
<!-- Performance -->
<logger name="Performance.*" minlevel="Info" writeTo="performanceFile" />
<!-- Reduce framework noise -->
<logger name="Microsoft.*" maxlevel="Info" final="true" />
<logger name="System.*" maxlevel="Warn" final="true" />
</rules> </rules>
</nlog> </nlog>