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

如何仅在调试应用时输出日志到Console,生产环境仅写入文件?

Serilog 调试/生产环境差异化日志输出配置(JSON版)

要实现调试时输出日志到控制台+文件,生产环境仅写入文件的需求,只需在现有JSON配置基础上做以下修改:

步骤1:添加必要的Sink包

确保项目已安装 Serilog.Sinks.Console NuGet包,用于控制台日志输出。

步骤2:修改JSON配置文件

更新后的完整配置如下:

{
  "Serilog": {
    "Using": [ "Serilog.Sinks.File", "Serilog.Filters.Expressions", "Serilog.Sinks.Console" ],
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning"
      }
    },
    "WriteTo": [
      // 仅调试环境输出到控制台
      {
        "Name": "Logger",
        "Args": {
          "configureLogger": {
            "Filter": [
              {
                "Name": "ByIncludingOnly",
                "Args": { 
                  "expression": "EnvironmentVariable('ASPNETCORE_ENVIRONMENT') = 'Development' or EnvironmentVariable('DOTNET_ENVIRONMENT') = 'Development'" 
                }
              }
            ],
            "WriteTo": [
              {
                "Name": "Console",
                "Args": {
                  "theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, Serilog.Sinks.Console"
                }
              }
            ]
          }
        }
      },
      // 信息/警告日志写入info.log
      {
        "Name": "Logger",
        "Args": {
          "configureLogger": {
            "Filter": [
              {
                "Name": "ByExcluding",
                "Args": { "expression": "@Level = 'Error' or @Level = 'Fatal'" }
              }
            ],
            "WriteTo": [
              {
                "Name": "File",
                "Args": {
                  "path": "./logs/info.log",
                  "rollingInterval": "Day"
                }
              }
            ]
          }
        }
      },
      // 错误/致命日志写入error.log
      {
        "Name": "File",
        "Args": {
          "path": "./logs/error.log",
          "restrictedToMinimumLevel": "Error",
          "rollingInterval": "Day"
        }
      }
    ],
    "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ]
  }
}

关键配置说明

  • 控制台输出过滤:通过ByIncludingOnly过滤器判断.NET环境变量,仅当ASPNETCORE_ENVIRONMENT或DOTNET_ENVIRONMENT为Development时,才启用控制台日志输出。若使用自定义环境变量(比如APP_ENV=Debug),可将表达式改为EnvironmentVariable('APP_ENV') = 'Debug'。
  • 文件输出逻辑保留:原有文件写入规则不受环境影响,调试和生产环境都会将对应级别日志写入指定文件。

环境变量设置

  • 调试阶段:在开发工具(如Visual Studio)中设置环境变量为Development,即可同时看到控制台和文件日志。
  • 生产环境(Windows服务):服务运行时环境变量默认为Production,控制台输出会自动被过滤,仅保留文件日志。

内容的提问来源于stack exchange,提问作者Álvaro García

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 13:53:32