我正在使用NLog登录 asp.net 核心2.0。我将日志事件存储在数据库中。
我希望我的消息异步保存。
Nlog.config 设置包括:
<?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="c:tempinternal-nlog.txt">
<extensions>
<add assembly="NLog.Web.AspNetCore" />
</extensions>
<targets>
<target name="file" xsi:type="AsyncWrapper" queueLimit="5000" batchSize="5" overflowAction="Discard">
<target name="db" xsi:type="Database"
connectionString="Data Source=.;Initial Catalog=DatabaseName;User Id=userId;Password=pwd;"
commandType="StoredProcedure" commandText="Sp_name" dbProvider="System.Data.SqlClient">
<parameter name="@TimeStamp" layout="${date}" />
<parameter name="@Level" layout="${uppercase:${level}}" />
<parameter name="@Message" layout="${message}" />
<parameter name="@Exception" layout="${exception}" />
<parameter name="@StackTrace" layout="${exception:format=StackTrace,Data:maxInnerExceptionLevel=10}" />
<parameter name="@eventLookupId" layout ="1" />
</target>
</target>
</targets>
<rules>
<logger name="Microsoft.*" minlevel="Info" writeTo="" final="true" />
<logger name="*" minlevel="Info" writeTo="file" />
</rules>
</nlog>
对于上述配置,我希望它以 5 的批量大小记录,但它在事件触发时立即记录,而不是批量记录。
不确定是否还需要任何其他配置才能使其工作。
> NLog 将以最大批处理大小(此处为 5(连续发送消息,并在批处理之间留出时间。asyncWrapper 的默认"timeToSleepBetweenBatches"为 1 毫秒。
例如,当批处理大小为 100 且 TimeToSleepBetweenBatches 为 1 秒时,最多发送 6000 条消息/分钟。
查看选项:https://github.com/NLog/NLog/wiki/AsyncWrapper-target#buffering-options