【发布时间】:2019-08-01 20:26:22
【问题描述】:
我们最近将 ASP.NET Core Web API 项目的日志记录框架从 log4net 更新为 NLog,当我们进行性能测试时,请求/秒服务的 NLog 与 NLog 相比要少得多。下面是我的 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\internal-nlog.txt">
<!-- enable asp.net core layout renderers -->
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
<add assembly="SumoLogic.Logging.NLog"/>
</extensions>
<!-- the targets to write to -->
<targets>
<!-- write logs to console -->
<target xsi:type="ColoredConsole" name="allConsole" formatMessage="false" layout="${longdate}|${level:uppercase=true}|${message}" />
<target name="sumoLogic" type="SumoLogicTarget" formatMessage="false" layout="${date:format=yyyy-MM-dd HH\:mm\:ss.fff} ${level}, ${message}${exception:format=tostring}${newline}">
<Url>#{Logging__SumoLogic__EndpointUrl}</Url>
<ConnectionTimeout>30000</ConnectionTimeout>
<SourceName>#{Logging__SumoLogic__SourceName}</SourceName>
<SourceCategory>#{Logging__SumoLogic__SourceCategory}</SourceCategory>
<UseConsoleLog>true</UseConsoleLog>
</target>
<target name="bufferedSumoLogic" type="BufferedSumoLogicTarget" formatMessage="false" layout="${date:format=yyyy-MM-dd HH\:mm\:ss.fff} ${level}, ${message}${exception:format=tostring}${newline}">
<Url>#{Logging__SumoLogic__EndpointUrl}</Url>
<SourceName>#{Logging__SumoLogic__SourceName}</SourceName>
<SourceCategory>#{Logging__SumoLogic__SourceCategory}</SourceCategory>
<ConnectionTimeout>30000</ConnectionTimeout>
<RetryInterval>5000</RetryInterval>
<MessagesPerRequest>10</MessagesPerRequest>
<MaxFlushInterval>10000</MaxFlushInterval>
<FlushingAccuracy>250</FlushingAccuracy>
<MaxQueueSizeBytes>500000</MaxQueueSizeBytes>
<UseConsoleLog>true</UseConsoleLog>
</target>
</targets>
<!-- rules to map from logger name to target -->
<rules>
<!-- Skip non-critical Microsoft logs and so log only own logs -->
<logger name="Microsoft.*" maxLevel="Info" final="true" />
<!-- Write all debug messages to console -->
<logger name="*" minlevel="#{Logging__ConsoleLog__LevelMin}" writeTo="allConsole" />
<!-- Write to sumo buffered log -->
<logger name="*" minlevel="#{Logging__BufferedLog__LevelMin}" maxlevel="#{Logging__BufferedLog__LevelMax}" writeTo="bufferedSumoLogic" />
<!-- Write to sumo instant log -->
<logger name="*" minlevel="#{Logging__InstantLog__LevelMin}" maxlevel="#{Logging__InstantLog__LevelMax}" writeTo="sumoLogic" />
</rules>
</nlog>
【问题讨论】:
-
我认为这取决于相扑目标。您可以尝试禁用对控制台的日志记录,因为控制台写入速度很慢。
-
您能否也粘贴您正在使用的 log4net-config 进行比较?
formatMessage="false"是什么意思?你检查过 NLoginternalLogFile的错误/警告吗?配置<UseConsoleLog>false</UseConsoleLog>后性能会提高吗? -
@manideep 尝试禁用控制台目标?
-
@Julian 是的,我也尝试禁用控制台目标。但没有运气。
标签: .net-core log4net nlog dotnet-core-pack