如何禁用Azure Functions默认日志并区分自定义与内置日志?
解决Azure Functions默认日志级别覆盖与自定义日志区分问题
一、区分自定义日志与默认日志的正确配置
别直接修改AzureFunctionsJobHost__logging__LogLevel__Default,这个全局配置会统一调整所有日志级别,导致你的自定义Info日志无法写入App Insights。正确做法是针对Functions内置日志的命名空间单独设置级别,过滤掉不需要的内置低级别日志,同时保留自定义日志的原有级别。
内置日志主要来自Microsoft.Azure.WebJobs、Microsoft.Azure.WebJobs.Host这些命名空间,你可以在应用设置里添加以下配置:
AzureFunctionsJobHost__logging__LogLevel__Microsoft.Azure.WebJobs=Warning AzureFunctionsJobHost__logging__LogLevel__Microsoft.Azure.WebJobs.Host=Warning AzureFunctionsJobHost__logging__LogLevel__YourCustomNamespace=Information
(把YourCustomNamespace替换成你自己代码的命名空间)
这样内置的Info及以下级别的日志会被屏蔽,而你自己编写的Info日志能正常写入App Insights。
二、关于AzureWebJobsDashboard设置的说明
AzureWebJobsDashboard是Azure Functions v1版本的旧配置,v2及以上版本已经废弃了这个设置,所以你在应用设置里找不到是正常的。新版完全不需要依赖这个配置控制内置日志,用上面的命名空间级别配置就足够了。
三、隔离进程模型的特殊情况
如果你的函数使用隔离进程模型(Isolated Worker),配置键名要换成针对Worker的命名空间:
Logging__LogLevel__Microsoft.Azure.Functions.Worker=Warning Logging__LogLevel__YourCustomNamespace=Information
内容的提问来源于stack exchange,提问作者Dumitru Laurenţiu
相关产品推荐
相关产品推荐

