.net-core - 从环境变量设置 Serilog 最低级别

标签 .net-core serilog

是否可以从环境变量设置 Serilog 最低日志级别?

如果我尝试像这样配置它

  "Serilog": {
    "MinimumLevel": "%LOG_LEVEL%",
    "WriteTo": [
      {
        "Name": "RollingFile",
        "Args": {
          "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] [v{SourceSystemInformationalVersion}] {Message}{NewLine}{Exception}",
          "pathFormat": "%LOG_FOLDER%/sds-osdr-domain-saga-host-{Date}.log",
          "retainedFileCountLimit": 5
        }
      }
    ]
  }

它返回错误

The value %LOG_LEVEL% is not a valid Serilog level.



是否可以以某种方式从环境变量传播日志级别?

最佳答案

我想你是在问 configuration by environment这不是特定于 serilog。
如果LOG_LEVEL与特定环境(开发、登台或生产)固定,您可以设置每个 LOG_LEVELappsettings.<EnvironmentName>.json ,并像这样设置配置:

var config = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", optional: false)
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
    .Build();
如果需要配置LOG_LEVEL从 docker-compose 文件或 kubernetes 部署文件中的环境变量,然后您可以通过调用 AddEnvironmentVariables 从环境变量中读取值:
var config = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", optional: false)
    .AddEnvironmentVariables()
    .Build();
并设置环境Serilog:MinimumLevel在 windows 或 ``Serilog__MinimumLevel` 在 linux 和 mac 中。

关于.net-core - 从环境变量设置 Serilog 最低级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49351130/

相关文章:

.net-core - 如何使用 ImageSharp 清除图像的 EXIF 数据?

elasticsearch - Serilog如何将自定义 “_id”字段发送到Elasticsearch

c# - 如何解决 DbContext 上的此 ASP.NET MVC 数据空构造函数警告?

node.js - 如何在Windows 10中修复 'rimraf is not a recognized command'

c# - 内联变量声明不编译

.net-core - 我可以使用 NETStandard.Library 1.5.0-rc2-24027 定位 netstandard1.6 吗?

c# - 当我指定 <Setting name ="serilog:write-to:AzureDocumentDB.endpointUrl"/> 时,.cscfg 文件给出错误

c# - 配置 NServiceBus 以记录导致消息重试的异常

c# - 尝试激活 'Serilog.AspNetCore.RequestLoggingMiddleware' 时无法解析“Serilog.Extensions.Hosting.DiagnosticContext”的服务

c# - 添加自定义 ExceptionFilter 后,Serilog 会立即停止记录异常