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

Serilog配置问题:EF日志与应用日志分离失败

问题排查与修复方案

核心问题分析

  1. EF日志未生成的原因
    全局日志级别覆盖配置中,Microsoft.EntityFrameworkCore被设为Error级别:

    "Override": {
      "Microsoft": "Warning",
      "Microsoft.EntityFrameworkCore": "Error"
    }
    

    EF的常规操作日志(如SQL执行、变更跟踪)默认是Information级别,该配置会过滤掉所有低于Error级别的EF日志,导致无EF日志输出。

  2. 日志重复的可能原因
    第一个文件Sink的路径存在笔误:"Logs/WrathForged.Auth.log..log"包含多余的小数点,可能导致文件名解析异常,引发重复写入问题。

修正后的配置

"Serilog": {
  "Using": [
    "Serilog.Sinks.Console",
    "Serilog.Sinks.File",
    "Serilog.Exceptions",
    "Serilog.Sinks.Async",
    "Serilog.Expressions"
  ],
  "MinimumLevel": {
    "Default": "Debug",
    "Override": {
      "Microsoft": "Warning",
      "Microsoft.EntityFrameworkCore": "Information" // 修改为Information,捕获EF常规日志
    }
  },
  "WriteTo": [
    {
      "Name": "Console",
      "Args": {
        "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}",
        "filter": [
          {
            "Name": "ByExcluding",
            "Args": {
              "expression": "StartsWith(SourceContext, 'Microsoft.EntityFrameworkCore')"
            }
          }
        ]
      }
    },
    {
      "Name": "Async",
      "batchSizeLimit": 100,
      "period": "00:00:02",
      "Args": {
        "configure": [
          {
            "Name": "File",
            "Args": {
              "rollingInterval": "Day",
              "path": "Logs/WrathForged.Auth.log", // 修正路径,移除多余小数点
              "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact",
              "filter": [
                {
                  "Name": "ByExcluding",
                  "Args": {
                    "expression": "StartsWith(SourceContext, 'Microsoft.EntityFrameworkCore')"
                  }
                }
              ]
            }
          }
        ]
      }
    },
    {
      "Name": "Async",
      "batchSizeLimit": 100,
      "Args": {
        "configure": [
          {
            "Name": "File",
            "Args": {
              "path": "Logs/WrathForged.Auth.DatabaseLogs.log", // 同样修正路径格式
              "rollingInterval": "Day",
              "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact",
              "filter": [
                {
                  "Name": "ByIncludingOnly",
                  "Args": {
                    "expression": "StartsWith(SourceContext, 'Microsoft.EntityFrameworkCore')"
                  }
                }
              ]
            }
          }
        ]
      }
    }
  ],
  "Enrich": [
    "FromLogContext",
    "WithMachineName",
    "WithThreadId",
    "WithExceptionDetails"
  ]
}

额外验证点

  • 确保已安装Serilog.Expressions NuGet包,否则过滤表达式无法生效。
  • 如果需要捕获更详细的EF日志(如敏感数据、参数值),可将Microsoft.EntityFrameworkCore的级别设为Debug,并在EF配置中开启详细日志:
    builder.LogTo(...) // 确保EF日志已接入Serilog管道
          .EnableSensitiveDataLogging(); // 可选,用于查看参数值
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:05:09