c# - 尽管设置了 minLevel,但 NLog 在库项目的所有级别上进行日志记录
问题描述
我有一个带有两个项目的 dotnet 解决方案。主项目用这个正确配置NLog
services.AddLogging(loggingBuilder =>
{
loggingBuilder
.AddFilter("Microsoft", LogLevel.Warning)
.ClearProviders()
.AddNLog("NLog.config");
});
并在某些时候这样做:
public static void ConfigureNLogLogger(LogLevel logLevel)
{
foreach (LoggingRule loggingRule in (IEnumerable<LoggingRule>) LogManager.Configuration.LoggingRules)
loggingRule.SetLoggingLevels(logLevel, LogLevel.Fatal);
LogManager.ReconfigExistingLoggers();
}
主项目中的日志是正确的(级别禁用取决于传递给上一个方法的 logLevel)
第二个项目通过 MEF 及其 DLL 加载到主项目中,但它仍然像这样直接使用 NLog(而不是微软 ILogger)
private readonly Logger _logger = LogManager.GetCurrentClassLogger();
但是,无论日志级别如何,都会记录来自第二个项目的日志。因此,如果我不想要 TRACE 日志,在主项目中我不会得到它们,但第二个项目仍然会记录它们。
如何强制第二个项目尊重日志记录级别?
解决方案
推荐阅读
- javascript - Firebase 数据库 URL 无法确定 - React Native
- laravel - 无法使用 pm2 运行 laravel-echo-server
- python - 计算给定范围内数字的出现次数
- php - 获取数据并执行减法
- java - 如何为 GET Rest 服务创建单元测试(Spring)
- javascript - 比较 React.JS 中两个不同对象数组的值
- python - Python Dataframe Pandas - 按列值上的条件 issubset() 过滤数据帧行
- python - Sklearn KBinsDiscretizer 保留原始列名
- linux - 在部署文件中运行终端命令
- python - 如何在 MacOS 中使用 Accelerate.h 构建 Python 模块?