LogManager.Configuration.FindRuleByName return 空。日志
LogManager.Configuration.FindRuleByName return null. NLog
我有规则
<targets >
<target name="Global" xsi:type="File" fileName="Logs/GlobalLog.txt" archiveNumbering="Date" enableArchiveFileCompression="true" archiveFileName="Archive/IPSlog.{#}.zip" archiveDateFormat="yyyy-MM-dd"
maxArchiveDays="${logLifetime}"
archiveEvery="Day" />
</targets>
<rules>
<logger name="Global" minlevel="Trace" writeTo="Global,Color" />
</rules>
我尝试通过代码更改规则
LogManager.Configuration.FindRuleByName("Global").EnableLoggingForLevels(loglevel, LogLevel.Fatal);
但 FindRuleByName return 为空。我的错误在哪里?
目标查找器工作正常
var target = (FileTarget)LogManager.Configuration.FindTargetByName("Global");
这条规则:
<logger name="Global" minlevel="Trace" writeTo="Global,Color" />
指定以下条件:
- Logger 必须命名为“Global”。前任。
NLog.LogManager.GetLogger("Global")
- LogLevel 必须是 Trace(或更多服务器)
- 写入名为
"Global"
和 "Color"
的目标。
我猜你想要的是这个:
<logger name="*" minlevel="Trace" writeTo="Global,Color" ruleName="Global" />
- Logger 可以是任何名称,因为
*
-wildcard。前任。 NLog.LogManager.GetCurrentClassLogger()
.
- LogLevel 必须是 Trace(或更多服务器)
- 写入名为
"Global"
和 "Color"
的目标。
- 分配 Logging-Rule-Name,因此可以使用
FindRuleByName
. 进行查找
请注意,您还可以使用 NLog Config-variables or NLog Global-Diagnostic-Context 动态更新级别过滤器。也可以看看:
https://github.com/NLog/NLog/wiki/Filtering-log-messages#semi-dynamic-routing-rules
我有规则
<targets >
<target name="Global" xsi:type="File" fileName="Logs/GlobalLog.txt" archiveNumbering="Date" enableArchiveFileCompression="true" archiveFileName="Archive/IPSlog.{#}.zip" archiveDateFormat="yyyy-MM-dd"
maxArchiveDays="${logLifetime}"
archiveEvery="Day" />
</targets>
<rules>
<logger name="Global" minlevel="Trace" writeTo="Global,Color" />
</rules>
我尝试通过代码更改规则
LogManager.Configuration.FindRuleByName("Global").EnableLoggingForLevels(loglevel, LogLevel.Fatal);
但 FindRuleByName return 为空。我的错误在哪里? 目标查找器工作正常
var target = (FileTarget)LogManager.Configuration.FindTargetByName("Global");
这条规则:
<logger name="Global" minlevel="Trace" writeTo="Global,Color" />
指定以下条件:
- Logger 必须命名为“Global”。前任。
NLog.LogManager.GetLogger("Global")
- LogLevel 必须是 Trace(或更多服务器)
- 写入名为
"Global"
和"Color"
的目标。
我猜你想要的是这个:
<logger name="*" minlevel="Trace" writeTo="Global,Color" ruleName="Global" />
- Logger 可以是任何名称,因为
*
-wildcard。前任。NLog.LogManager.GetCurrentClassLogger()
. - LogLevel 必须是 Trace(或更多服务器)
- 写入名为
"Global"
和"Color"
的目标。 - 分配 Logging-Rule-Name,因此可以使用
FindRuleByName
. 进行查找
请注意,您还可以使用 NLog Config-variables or NLog Global-Diagnostic-Context 动态更新级别过滤器。也可以看看: https://github.com/NLog/NLog/wiki/Filtering-log-messages#semi-dynamic-routing-rules