You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Microsoft.Extensions.Logging时LogError未记录异常的问题

解决ILogger.LogError只打印消息不输出异常的问题

我来帮你搞定这个日志只显示消息、不输出异常详情的问题!你调用_logger.LogError(ex,"Failed to do stuff")的写法是完全正确的,问题出在日志输出模板的配置上——默认的控制台和文件日志模板并没有包含异常信息的占位符,所以即使你传入了Exception对象,日志提供者也不会输出它的堆栈和详情。

核心原因

不管是AddConsoleLogger还是你用的文件日志提供者,它们的默认输出模板通常只包含时间戳、日志级别和消息内容,缺少{Exception}这个关键占位符,而这个占位符正是用来渲染异常信息(包括堆栈追踪)的。

解决步骤

1. 修改appsettings.json配置(推荐方式)

直接在配置文件里给控制台和文件日志添加包含{Exception}的模板:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "System": "Information",
      "Microsoft": "Information"
    },
    "Console": {
      "FormatterOptions": {
        "TimestampFormat": "yyyy-MM-dd HH:mm:ss ",
        "Template": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
      }
    },
    "File": {
      "FormatterOptions": {
        "Template": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
      }
    }
  },
  "FileLoggingOptions": {
    "FileName": "app-",
    "LogDirectory": "logs",
    "FileSizeLimit": 10485760,
    "Extension": "log"
  }
}

模板里的{Exception}占位符会自动处理:如果有异常传入,就输出完整的异常信息(包括堆栈);如果没有异常,就不会显示这部分内容。

2. 或者通过代码配置日志模板

如果你更倾向于用代码而非配置文件来设置,也可以在ConfigureLogging方法里直接指定模板:

控制台日志配置

configLogging.AddConsole(options =>
{
    options.FormatterOptions = new SimpleConsoleFormatterOptions
    {
        TimestampFormat = "yyyy-MM-dd HH:mm:ss ",
        Template = "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
    };
});

文件日志配置(以常见的Microsoft.Extensions.Logging.File包为例)

configLogging.AddFile(options =>
{
    hostContext.Configuration.GetSection("FileLoggingOptions").Bind(options);
    // 自定义日志格式,包含异常信息
    options.FormatLogEntry = entry => 
        $"{entry.Timestamp:yyyy-MM-dd HH:mm:ss} [{entry.Level:u3}] {entry.Message}{Environment.NewLine}{entry.Exception}";
});

验证修改

配置完成后,重新运行程序,当DoStuff方法抛出异常时,日志就会同时显示你设置的消息Failed to do stuff,以及完整的异常堆栈追踪信息了。

内容的提问来源于stack exchange,提问作者Mugen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:00:27