Azure Functions v3日志配置:如何仅查看应用自身的Information级别日志
Azure Functions v3 日志配置方案
Startup中的硬编码日志过滤规则优先级高于所有配置文件,必须先删除你之前写的那两行硬编码配置,否则后续修改的所有配置文件规则都不会生效
配置不生效的核心原因
local.settings.json仅会加载Values节点下的内容,你之前放在外层的Logging节点会被运行时直接忽略- 你在Startup中硬编码的过滤规则覆盖了所有配置文件的规则,导致host.json修改无效
多环境差异化配置步骤
1. 按环境拆分host配置文件
Azure Functions v3 依靠ASPNETCORE_ENVIRONMENT环境变量区分运行环境,自动加载对应环境的配置文件:
- 本地开发环境对应
host.Development.json - 测试环境对应
host.Staging.json - 生产环境对应
host.Production.json
环境专属配置会覆盖通用host.json中的同名配置,不需要重复写全量配置。
2. 通用host.json基础配置(所有环境共用)
{ "version": "2.0", "logging": { "logLevel": { "Default": "Warning", // 仅允许你的业务代码命名空间输出Information及以上级别日志 "FirstKey.DataMiner.Functions": "Information", // 过滤系统、微软组件、EF的非错误日志 "Microsoft": "Error", "System": "Error", "Microsoft.EntityFrameworkCore": "Error" }, "applicationInsights": { "samplingSettings": { "isEnabled": true, "excludedTypes": "Request" } } } }
3. 环境专属配置示例(以本地开发环境为例)
新建host.Development.json,可单独调低本地开发的日志级别方便调试:
{ "logging": { "logLevel": { "FirstKey.DataMiner.Functions": "Debug" } } }
4. 本地临时调整配置方法
如果不想修改host文件,可直接在local.settings.json的Values节点下添加日志规则,优先级高于所有host配置:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "MinerSchedule": "*/15 * * * *", "logging:logLevel:Default": "Warning", "logging:logLevel:FirstKey.DataMiner.Functions": "Information", "logging:logLevel:Microsoft": "Error", "logging:logLevel:System": "Error" } }
5. 云端生产环境调整配置
无需重新发布代码,直接在Azure门户的Function应用「配置」-「应用程序设置」中添加和上述Values节点格式一致的键值对即可生效。
内容的提问来源于stack exchange,提问作者ShaneKm
相关产品推荐
相关产品推荐

