c# - LogManager.Configuration.FindRuleByName 返回 null。日志
问题描述
我有规矩
<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 返回 null。我的错误在哪里?目标查找器工作正常
var target = (FileTarget)LogManager.Configuration.FindTargetByName("Global");
解决方案
这条规则:
<logger name="Global" minlevel="Trace" writeTo="Global,Color" />
指定以下条件:
- 记录器必须命名为“全局”。前任。
NLog.LogManager.GetLogger("Global")
- LogLevel 必须是 Trace(或更多 servere)
- 写入名为
"Global"
和的目标"Color"
。
我想你想要的是这样的:
<logger name="*" minlevel="Trace" writeTo="Global,Color" ruleName="Global" />
*
由于-wildcard ,Logger 可以是任何名称。前任。NLog.LogManager.GetCurrentClassLogger()
.- LogLevel 必须是 Trace(或更多 servere)
- 写入名为
"Global"
和的目标"Color"
。 - 分配 Logging-Rule-Name,因此可以使用
FindRuleByName
.
请注意,您还可以使用 NLog Config-variables或 NLog Global-Diagnostic-Context来动态更新级别过滤器。另请参阅: https ://github.com/NLog/NLog/wiki/Filtering-log-messages#semi-dynamic-routing-rules
推荐阅读
- java - 集合引发的不需要的异常
- flutter - 在颤振中添加位置插件时出错?
- neo4j - 将 neo4j 查询链接在一起
- java - 在 JAX-RS WriterInterceptor 和 ReaderInterceptor 之间传递参数
- reactjs - 出现错误:src/react_header/src/index.js:React 中的意外令牌(10:2)
- python - 为什么 max() 函数返回的项目小于列表中的另一个项目?
- plugins - 为 hippo cms 的 ckeditor 添加自定义颜色
- php - Laravel如何使用querybuilder从两列进行分组连接
- python - 文件上传 S3 和 heroku python
- kubernetes - 在 Openshift 上使用 Zookeeper