我正在尝试设置NLog与我的Azure持久函数(v4)一起工作。
NLog以程序方式(不使用配置文件)进行配置,并通过sp写入Azure DB目标。
总体上运行良好。但是有很多不希望的日志调试和信息级别显示在数据库与我自己的用户日志。它们是Azure服务记录器的输出,如Azure.Core.1
,DurableTask.AzureStorage
,Host.xxx
。
我尝试了几种方法来过滤它们:
- 向主机添加
"Azure.Core.1" : "Error"
等项。json文件。 - 添加日志过滤器,如
logBuilder.AddFilter("Azure.Core.1", Microsoft.Extensions.Logging.LogLevel.Error)
- 添加NLog规则如
config.LoggingRules.Add(new LoggingRule("Azure.Core.1", NLog.LogLevel.Error, target));
但是没有一个工作…有什么建议吗?
NLog从上到下计算logginggrrules。这意味着应该首先添加全局过滤器,并在最后添加实际目标。
var myTarget = new AmazingNLogTarget();
var logger = LogManager.Setup().LoadConfiguration(c =>
{
c.ForLogger("System.*").WriteToNil(NLog.LogLevel.Warn);
c.ForLogger("Microsoft.*").WriteToNil(NLog.LogLevel.Warn);
c.ForLogger("Microsoft.Hosting.Lifetime*").WriteToNil(NLog.LogLevel.Info); // finalMinLevel overrides previous rule
c.ForLogger().FilterMinLevel(NLog.LogLevel.Info).WriteTo(myTarget);
}).GetCurrentClassLogger();
参见:https://nlog-project.org/2021/08/25/nlog-5-0-preview1-ready.html#fluent-api-for-nlog-loggingconfiguration