如何在生产环境中将Debug级别日志输出至Application Insights?
我来帮你搞定这个问题,这其实是ASP.NET Core默认的日志过滤规则加上Application Insights的配置限制,导致Debug级别的日志在生产环境没被输出。按下面的步骤调整就行:
1. 修改生产环境的配置文件
打开你的appsettings.Production.json,找到Logging节点(没有的话就新建),专门给Application Insights设置Debug级别的日志权限:
"Logging": { "LogLevel": { "Default": "Information", // 全局默认保留Info及以上,不影响其他日志渠道 "Microsoft": "Warning" }, "ApplicationInsights": { "LogLevel": { "Default": "Debug" // 单独允许Application Insights接收Debug级日志 } } }
这个配置的作用是,让Application Insights打破全局的日志级别限制,专门捕获所有类别的Debug及以上日志。
2. 确认Startup里的遥测服务配置
在Startup.cs的ConfigureServices方法里,一定要加上Application Insights的遥测服务注册,不然日志没法持久化到AI:
public void ConfigureServices(IServiceCollection services) { // 你的其他服务配置代码... // 替换成你的InstrumentationKey,也可以直接从配置里读 services.AddApplicationInsightsTelemetry(Configuration["ApplicationInsights:InstrumentationKey"]); }
这一步是让应用和Application Insights建立连接,没有它的话,日志就算生成了也发不出去。
3. 检查LoggerFactory的代码
你已经在Configure方法里加了loggerFactory.AddApplicationInsights(app.ApplicationServices, LogLevel.Debug);,这部分是对的——这里的LogLevel.Debug是告诉日志提供者“最低捕获Debug级别的日志”,和我们刚才在配置文件里的设置是互补的,不用改。
4. 让Debug日志出现在Live Metrics(可选)
如果还想在Azure门户的Live Metrics Stream里看到Debug日志,你可以进去Application Insights资源的Live Metrics页面,点右上角的齿轮图标,把日志级别改成Debug就行。默认生产环境的Live Metrics只显示Info及以上的日志,调完就能看到Debug跟踪了。
改完这些之后重新部署生产环境,Debug级别的日志应该就能正常持久化到Application Insights,不管是用Visual Studio还是analytics.applicationinsights.io都能查到,Live Metrics里也能看到(如果做了第四步的话)。
内容的提问来源于stack exchange,提问作者cnbucket

