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

.NET 6结合Serilog:如何仅记录应用代码显式编写的日志?

仅记录应用代码显式编写的Serilog日志(.NET 6)

要过滤掉.NET系统生成的日志,只保留自己代码里显式编写的日志,核心是通过日志来源命名空间进行筛选——系统日志基本来自Microsoft、System开头的命名空间,而你的应用代码有专属的命名空间前缀,据此过滤即可。

方法1:通过appsettings.json配置

方式A:直接禁用系统命名空间日志

在Serilog配置中,通过MinimumLevel.Override将Microsoft和System的日志级别设为None,彻底屏蔽这些来源的日志:

{
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "None",
        "System": "None"
      }
    },
    "WriteTo": [
      {
        "Name": "MSSqlServer",
        "Args": {
          "connectionString": "你的数据库连接字符串",
          "tableName": "Logs"
        }
      }
    ]
  }
}

方式B:仅包含应用自身命名空间日志

如果需要更精确的控制,只保留你应用的命名空间(比如YourApp开头的),可以用Filter规则:

{
  "Serilog": {
    "MinimumLevel": "Information",
    "Filter": [
      {
        "Name": "ByIncludingOnly",
        "Args": {
          "expression": "SourceContext like 'YourApp%'"
        }
      }
    ],
    "WriteTo": [
      {
        "Name": "MSSqlServer",
        "Args": {
          "connectionString": "你的数据库连接字符串",
          "tableName": "Logs"
        }
      }
    ]
  }
}

SourceContext是Serilog自动记录的日志来源类的命名空间,通过like匹配你的应用前缀,仅保留符合条件的日志。

方法2:通过代码配置(Program.cs)

如果偏好代码方式控制,可以在UseSerilog中添加过滤逻辑:

var builder = WebApplication.CreateBuilder(args);

builder.Host.UseSerilog((context, config) =>
{
    config
        .ReadFrom.Configuration(context.Configuration)
        // 排除Microsoft和System开头的日志
        .Filter.ByExcluding(logEvent => 
            logEvent.Properties.TryGetValue("SourceContext", out var sourceCtx) &&
            (sourceCtx.ToString().StartsWith("\"Microsoft") || sourceCtx.ToString().StartsWith("\"System")))
        .WriteTo.MSSqlServer(
            connectionString: context.Configuration.GetConnectionString("YourDbConn"),
            tableName: "Logs");
});

var app = builder.Build();
// 其他中间件配置...

注意事项

  • 确保你的代码中是通过依赖注入获取ILogger<T>实例,这样SourceContext会自动设为当前类的命名空间,过滤规则才能正确匹配。
  • 如果有第三方库的日志需要排除,可在过滤规则中添加对应的命名空间(比如ThirdPartyLib)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 21:06:07