我使用的是NLog 4.0.1,这是写入日志的代码
public static void LogInfo(string message)
{
NLog.LogManager.GetCurrentClassLogger().Info(message);
}
这是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="false"
throwExceptions="false">
<targets async="true">
<target xsi:type="File"
name="default"
layout="${longdate} ${message}"
fileName="${basedir}/PDF_${shortdate}.log"
keepFileOpen="false"
/>
</targets>
<rules>
<logger name="*" writeTo="default" minlevel="Info" /> <!-- cambie minlevel="Off" para apagar el log de ventas -->
</rules>
</nlog>
在日志文件中,我仍然看到许多关于“在1毫秒内重新加载配置”的消息,但它们不应该在那里(据我所知)
我做错了什么或缺少什么
答案 0 :(得分:0)
事实证明,同一项目的另一个模块也在使用NLog和不同的配置文件。因此,此规则(*)导致其他记录器也写入我的日志文件。
<logger name="*" writeTo="default" minlevel="Info" />
解决方案是在记录器中使用名称
<?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="false"
throwExceptions="false">
<targets async="true">
<target xsi:type="File"
name="PaymentDetailsTarget"
layout="${longdate} ${message}"
fileName="${basedir}/PD_${shortdate}.log"
keepFileOpen="false"
/>
</targets>
<rules>
<!-- Para apagar el log de ventas cambie minlevel="Off" -->
<logger name="PaymentDetailsLogger" writeTo="PaymentDetailsTarget" minlevel="Info" />
</rules>
</nlog>
并写入这样的日志:
private static NLog.Logger PDlogger = NLog.LogManager.GetLogger("PaymentDetailsLogger");
/// <summary>
/// Logs an information message using NLOG
/// </summary>
/// <param name="message">The message to be logged</param>
public static void LogInfo(string message)
{
PDlogger.Info(message);
}