ASP.NET Core 3.1中LogInformation无法写入Application Insights问题
问题解决:ASP.NET Core 3.1中LogInformation无法写入Application Insights
可能的原因及修复方案
1. 明确指定日志类别的LogLevel
默认的Default级别可能未覆盖LogService所在的命名空间,需在配置中明确添加该类/命名空间的日志级别:
修改appSettings.Development.json:
{ "Logging": { "LogLevel": { "Default": "Information", "你的项目命名空间.LogService": "Information" } }, "ApplicationInsights": { "LogLevel": { "Default": "Information", "你的项目命名空间.LogService": "Information" }, "ConnectionString": "secret" } }
将你的项目命名空间替换为LogService实际所在的命名空间。
2. 调整日志占位符格式
你的LogInformation调用中使用了带空格的占位符{Log Info},部分版本可能存在解析异常,建议改为无空格的命名:
_logger.LogInformation("Parameters: {LogInfo}", _logConfig.IsLogEnabled);
3. 关闭Application Insights采样机制
默认采样会丢弃部分Information级别的日志(Error级别日志优先级高,不会被采样),可在配置中关闭采样:
{ "ApplicationInsights": { "Sampling": { "Enabled": false }, "LogLevel": { "Default": "Information" }, "ConnectionString": "secret" } }
4. 显式配置Application Insights日志收集
在Startup.cs中显式启用日志收集并开启调试日志(仅开发环境使用),便于排查日志是否正常发送:
services.AddApplicationInsightsTelemetry(options => { options.EnableDebugLogger = true; });
5. 检查自定义TelemetryProcessor的过滤规则
如果项目中自定义了ITelemetryProcessor,确认没有过滤掉TraceTelemetry(对应Information级别的日志)——Error日志对应ExceptionTelemetry,通常不会被误过滤。
内容的提问来源于stack exchange,提问作者Sachin K
相关产品推荐
相关产品推荐

