.NET Trace/Debug日志级别无法映射到事件查看器对应级别问题咨询
解决Microsoft.Extensions.Logging.EventLog Trace/Debug级别映射问题
默认情况下,Microsoft.Extensions.Logging.EventLog会把Trace和Debug级别的日志都映射到EventLog的Information级别,导致事件查看器里这两类日志都显示为“信息”,而非预期的“详细(Verbose)”。要解决这个问题,需要手动自定义日志级别映射规则。
解决步骤
1. 自定义级别映射配置
在项目的日志配置代码中,覆盖默认的级别映射,将Trace/Debug映射到Verbose级别:
var builder = WebApplication.CreateBuilder(args); // 配置EventLog日志的级别映射 builder.Logging.AddEventLog(options => { // 清空默认映射规则 options.LevelMapping.Clear(); // 手动添加自定义映射 options.LevelMapping.Add(new LogLevelMapping(LogLevel.Trace, EventLevel.Verbose)); options.LevelMapping.Add(new LogLevelMapping(LogLevel.Debug, EventLevel.Verbose)); options.LevelMapping.Add(new LogLevelMapping(LogLevel.Information, EventLevel.Informational)); options.LevelMapping.Add(new LogLevelMapping(LogLevel.Warning, EventLevel.Warning)); options.LevelMapping.Add(new LogLevelMapping(LogLevel.Error, EventLevel.Error)); options.LevelMapping.Add(new LogLevelMapping(LogLevel.Critical, EventLevel.Critical)); // 允许记录Trace及以上级别的日志 options.Filter = (_, level) => level >= LogLevel.Trace; });
2. 确保事件查看器显示Verbose级别
打开事件查看器后,在日志筛选设置中勾选**详细(Verbose)**选项,否则映射后的Verbose级别日志可能不会显示。
验证效果
运行你的测试代码:
logger.LogTrace("trace"); logger.LogDebug("debug"); logger.LogInformation("info");
此时事件查看器中,trace和debug日志会显示为详细(Verbose)级别,info日志保持信息级别,符合预期。
内容的提问来源于stack exchange,提问作者spottedmahn
相关产品推荐
相关产品推荐

