Azure Durable Function(v4)使用NLog过滤非期望日志求助
解决Azure Durable Function v4中NLog过滤Azure服务日志的问题
针对你遇到的Azure服务日志(如Azure.Core.1、DurableTask.AzureStorage、Host.xxx)混入数据库日志的问题,可按以下方案逐一排查修正:
1. 修正host.json的日志过滤配置
v4版本的Function host.json日志配置有固定结构,需确保过滤规则放在logging.logLevel节点下,且使用通配符匹配日志器前缀(避免精确匹配遗漏变体):
{ "logging": { "logLevel": { "Azure.Core": "Error", "DurableTask.AzureStorage": "Error", "Host": "Error" } } }
2. 调整MEL过滤器的配置顺序
在Program.cs中,需先清除默认日志提供器,再添加MEL级别过滤,最后集成NLog,确保过滤逻辑先于NLog生效:
var host = new HostBuilder() .ConfigureFunctionsWorkerDefaults() .ConfigureLogging(logBuilder => { logBuilder.ClearProviders(); // 清除默认日志提供器,避免冲突 // 添加MEL级别的过滤规则 logBuilder.AddFilter("Azure.Core", LogLevel.Error); logBuilder.AddFilter("DurableTask.AzureStorage", LogLevel.Error); logBuilder.AddFilter("Host", LogLevel.Error); // 集成NLog logBuilder.AddNLog(new NLogProviderOptions { CaptureMessageTemplates = true, CaptureMessageProperties = true }); }) .Build(); host.Run();
3. 优化NLog编程式规则(关键)
使用通配符匹配日志器前缀,并设置规则为Final=true,确保匹配到的低级别日志不再流入后续规则:
var nlogConfig = new LoggingConfiguration(); // 初始化你的数据库目标(存储过程配置) var dbTarget = new DatabaseTarget("dbLogTarget") { CommandType = System.Data.CommandType.StoredProcedure, CommandText = "YourLogStoredProcedure", // 配置存储过程参数等... }; nlogConfig.AddTarget(dbTarget); // 先添加拒绝规则:拦截Azure服务日志的Debug/Info/Warn级别 nlogConfig.LoggingRules.Add(new LoggingRule("Azure.Core*", LogLevel.Debug, LogLevel.Warn, dbTarget) { Final = true }); nlogConfig.LoggingRules.Add(new LoggingRule("DurableTask.AzureStorage*", LogLevel.Debug, LogLevel.Warn, dbTarget) { Final = true }); nlogConfig.LoggingRules.Add(new LoggingRule("Host*", LogLevel.Debug, LogLevel.Warn, dbTarget) { Final = true }); // 再添加允许业务日志的规则(替换为你的函数命名空间或日志器前缀) nlogConfig.LoggingRules.Add(new LoggingRule("YourFunctionNamespace*", LogLevel.Trace, LogLevel.Fatal, dbTarget)); // 应用NLog配置 LogManager.Configuration = nlogConfig;
额外注意事项
- 确保NLog及扩展包版本与.NET Isolated(v4 Function依赖)兼容,建议使用最新稳定版的
NLog和NLog.Extensions.Logging。 - 检查是否存在其他代码逻辑修改了日志配置,避免覆盖上述过滤规则。
内容的提问来源于stack exchange,提问作者DaPanda
相关产品推荐
相关产品推荐

