Azure Function服务类日志无法写入Application Insights求助
Azure Function服务类日志无法写入Application Insights的排查方案
针对你遇到的服务类日志不显示问题,结合你的代码配置,以下是几个关键排查点和解决办法:
1. 日志类别与host.json配置不匹配
你在RestService中注入的是ILogger<IRestService>,此时日志的类别是接口的完整命名空间(FunctionApp.Services.IRestService),但你在host.json里配置的是实现类FunctionApp.Services.RestService的日志级别,导致信息级别的日志被默认过滤规则拦截。
解决办法二选一:
- 修改host.json的日志类别,改为接口的全名:
"logLevel": { "FunctionApp.Services.IRestService": "Information" }
- 修改RestService的注入类型,改为
ILogger<RestService>:
private readonly ILogger<RestService> _logger; public RestService(ILogger<RestService> logger) { _logger = logger; }
2. 检查Application Insights采样规则
你的host.json中启用了采样(samplingSettings.isEnabled: true),如果采样率较低,信息级别的日志可能被采样丢弃,导致在Application Insights中看不到。
临时测试方案:
关闭采样验证是否能看到日志:
"applicationInsights": { "samplingSettings": { "isEnabled": false } }
确认日志能正常显示后,再根据业务需求调整采样规则(比如调整采样率、添加采样排除规则)。
3. 修正日志调用的参数问题
你的LogInformation调用中,第二个参数"1212121212"没有对应的占位符,虽然不影响日志写入,但属于不规范写法,可能导致日志格式异常:
// 错误写法:无占位符但传了参数 _logger.LogInformation("************************************TEST THIS WORK************************************","1212121212"); // 修正为二选一: // 1. 去掉多余参数 _logger.LogInformation("************************************TEST THIS WORK************************************"); // 2. 添加占位符 _logger.LogInformation("************************************TEST THIS WORK: {TraceId}************************************","1212121212");
4. 确认服务类是否被正确调用
检查函数类中是否正确注入了IRestService,并且确实执行了SampleMethod方法。如果函数逻辑中没有调用该方法,或者调用前抛出了异常,自然不会产生日志。
内容的提问来源于stack exchange,提问作者Tarun Bhatt
相关产品推荐
相关产品推荐

