如何在Azure Function中禁用向App Insights的日志记录
解决Azure Function订阅消息与Blob存储检查日志过多的问题
调整日志级别配置
针对你遇到的两类冗余日志,需要在logging.logLevel中添加更精准的命名空间级别控制:
1. 屏蔽Blob存储检查操作日志
若当前Azure.Storage.Blobs设为Warning仍有过多检查类日志,可细化到具体操作的子命名空间,进一步收紧级别:
"Azure.Storage.Blobs.BlobContainerClient": "Error", "Azure.Storage.Blobs.BlobClient": "Error"
将这些子命名空间的日志级别设为Error,即可过滤掉常规的存储检查类Info级日志。
2. 屏蔽订阅消息检查操作日志
订阅消息相关日志通常来自Azure Service Bus,需添加对应命名空间的级别控制:
"Azure.Messaging.ServiceBus": "Error", "Microsoft.Azure.WebJobs.ServiceBus": "Error"
若使用旧版Service Bus SDK,可替换为Microsoft.Azure.ServiceBus,将级别设为Error即可屏蔽消息检查类日志。
同步Serilog配置
你的Serilog全局最低级别设为Information,会导致即使AppSettings中logLevel设置更严格,Serilog仍可能输出Info级日志。需同步调整Serilog配置,保留业务所需日志的同时过滤冗余内容:
"Serilog": { "MinimumLevel": "Warning", "Override": { "Function": "Information", "Host.Aggregator": "Information" }, "WriteTo": [ { "Name": "Console", "Args": { "outputTemplate": "{Timestamp:HH:mm:ss} {Level} | {RequestId} - {Message}{NewLine}{Exception}" } } ] }
这里将Serilog全局最低级别设为Warning,同时通过Override保留你需要的业务日志(Function和Host.Aggregator的Info级日志)。
完整配置示例
调整后的logging配置如下:
"logging": { "logLevel": { "default": "Information", "Microsoft": "Warning", "System": "Warning", "Host": "Error", "Function": "Information", "Host.Aggregator": "Information", "Azure.Storage.Blobs": "Error", "Azure.Storage.Blobs.BlobContainerClient": "Error", "Azure.Storage.Blobs.BlobClient": "Error", "Azure.Messaging.ServiceBus": "Error", "Microsoft.Azure.WebJobs.ServiceBus": "Error", "Host.Functions": "Warning" }, "Serilog": { "MinimumLevel": "Warning", "Override": { "Function": "Information", "Host.Aggregator": "Information" }, "WriteTo": [ { "Name": "Console", "Args": { "outputTemplate": "{Timestamp:HH:mm:ss} {Level} | {RequestId} - {Message}{NewLine}{Exception}" } } ] } }
验证效果
修改配置后重启Azure Function应用,观察日志输出是否不再包含订阅消息检查和Blob存储检查的Info级日志。若仍有残留,可通过日志内容中的来源字段确认具体命名空间,再针对性添加级别控制。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

