【发布时间】:2021-12-08 03:10:50
【问题描述】:
由于某种原因,NLog 忽略了配置文件。我有一个带有Build Action: Content 和Copy to Output Directory: Copy always 的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">
<targets>
<target name="default" xsi:type="Console" />
<target name="dump" xsi:type="File" filename="./dump.log">
<layout xsi:type="JsonLayout" includeAllProperties="true">
</layout>
</target>
</targets>
<!-- rules to map from logger name to target -->
<rules>
<logger name="DumpLogger" minlevel="Trace" writeTo="dump" />
<logger name="*" minlevel="Trace" writeTo="dump" />
</rules>
</nlog>
我有这个代码:
var logger = LogManager.GetLogger("DumpLogger");
logger.Trace("Try Trace"); // ignored
logger.Info("Try Info"); // writes to console
我还尝试在 GetLogger 调用之前添加显式 NLog 配置:
LogManager.LoadConfiguration(@"C:\Projects\ConsoleApplication1\bin\x64\Debug\NLog.config");
但我得到了相同的结果。
为什么 NLog 会忽略我的配置文件?
【问题讨论】:
-
为什么你认为它被忽略了?因为找不到日志文件?
-
不,因为
minLevel是Trace而Trace日志被忽略(仅输出调试及以上),因为DumpLogger应该写入文件但日志转到安慰。该文件根本没有创建,但这不是唯一的症状。 -
Nlog文件名的默认文件名应该是
<ExecutableName>.nlog,所以将NLog.Config作为MyApplication.exe.nlog复制到bin目录下。 -
相同的行为。打印到控制台并忽略 Trace...
标签: c# logging nlog .net-framework-4.8