如何解决.NET Core 中的 NLog 不存档日志文件
我有 NLog,它正在登录我的日志文件,但它没有存档日志文件,我仍然在日志文件中看到昨天的日志,它们没有存档,而且我没有看到为存档创建的新文件。下面是配置代码:
<?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"
internalLogFile="C:\temp\EMCS\ItemAPI\ItemAPI-internal-nlog.txt">
<!-- enable asp.net core layout renderers -->
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
</extensions>
<variable name="logDirectory" value="C:\temp\EMP\ITEM"/>
<targets>
<!-- write logs to file -->
<target xsi:type="File"
name="file"
archiveEvery="Day"
archiveFileName = "ItemAPI-{########}.log"
archiveNumbering = "Date"
archiveDateFormat = "yyyyMMdd"
maxArchiveFiles = "4"
fileName="${logDirectory}\ItemAPI.log"
layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${aspnet-user-identity}|${machinename}|${processname}|${message} ${exception:format=tostring}" />
</target>
</targets>
<rules>
<!--Skip non-critical Microsoft logs and so log only own logs-->
<logger name="Microsoft.*" maxlevel="Info" final="true" />
<logger name="*" minlevel="Trace" writeTo="file" />
</rules>
</nlog>
我是否遗漏了文件日志配置中的任何内容?为什么我在运行解决方案时没有看到档案被创建并且我的文件日志没有得到清理。
解决方法
<?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">
<!-- enable asp.net core layout renderers -->
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
<add assembly="NLog.Appsettings.Standard"/>
</extensions>
<variable name="logDirectory" value="C:\temp\EMCS\Item\ItemAPI"/>
<variable name="archiveDirectory" value="C:\temp\EMCS\Item\archive"/>
<targets>
<target xsi:type="FallbackGroup" name="all" returnToFirstOnSuccess="true">
<!-- write logs to database -->
<target name="database" xsi:type="Database"
connectionString="${appsettings:name=ConnectionStrings.DefaultConnection}"
commandText="INSERT INTO [LOGS](EventId,SeverityValue,Timestamp,MachineName,AppDomainName,ProcessId,ProcessName,ThreadId,ThreadName,[User],MessageText,FormattedMessageText)
VALUES (@eventId,@severityValue,@timestamp,@machineName,@appDomainName,@processId,@processName,@threadId,@threadName,@user,@messageText,@formattedMessageText)">
<parameter name="@eventId" layout="${sequenceid}" />
<parameter name="@severityValue" layout="${uppercase:${level}}" />
<parameter name="@timestamp" layout="${date}" />
<parameter name="@machineName" layout="${machinename}" />
<parameter name="@appDomainName" layout="${appdomain}" />
<parameter name="@processId" layout="${processid}" />
<parameter name="@processName" layout="${processname}" />
<parameter name="@threadId" layout="${threadid}" />
<parameter name="@threadName" layout="${threadname}" />
<parameter name="@user" layout="${aspnet-user-identity}" />
<parameter name="@messageText" layout="${message}" />
<parameter name="@formattedMessageText" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${aspnet-user-identity}|${machinename}|${processname}|${message} ${exception:format=tostring} ${stacktrace}" />
</target>
<!-- write logs to file -->
<target xsi:type="File"
name="file"
fileName="${logDirectory}.log"
layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${aspnet-user-identity}|${machinename}|${processname}|${message} ${exception:format=tostring}"
keepFileOpen ="false"
concurrentWrites ="true"
archiveNumbering="DateAndSequence"
archiveDateFormat="yyyy-MM-dd"
archiveAboveSize="10000000"
archiveFileName="${archiveDirectory}\ItemAPI.{#}.log"
maxArchiveFiles="10"/>
</target>
</targets>
<rules>
<!--Skip non-critical Microsoft logs and so log only own logs-->
<logger name="Microsoft.*" maxlevel="Info" final="true" />
<logger name="*" minlevel="Trace" writeTo="all" />
</rules>
</nlog>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。