首页 > 解决方案 > serilog 的独立配置文件

问题描述

我正在寻找一种方法来为 serilog 提供一个独立的 XML/JSON 配置文件,该文件是从应用程序本身运行的目录中动态加载的。

我正在寻找类似于NLog 提供的东西。如Nlog#Configuration-file中所述:

对于独立的 *.exe 应用程序,文件搜索如下:

  • 标准应用程序配置文件(通常是 applicationname.exe.config)
  • 应用程序目录中的 applicationname.exe.nlog
  • 应用程序目录中的 NLog.config(名称敏感;使用 docker dotnet core)
  • NLog.dll.nlog 在 NLog.dll 所在目录中(仅当 GAC 中未安装 NLog 时)

serilog中是否有类似的行为?

标签: serilog

解决方案


我自己在这个wiki中找到了答案。

var configuration = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("debug.json")
    .Build();

var logger = new LoggerConfiguration()
    .ReadFrom.Configuration(configuration)
    .CreateLogger();

debug.json应用程序目录中可以更改的文件在哪里。我的示例文件看起来像

{
  "Serilog": {
    "Using":  [ "Serilog.Sinks.File" ],
    "MinimumLevel": "Debug",
    "WriteTo": [
      { "Name": "File", "Args": { "path": "log.log" } }
    ],
    "Properties": {
        "Application": "Sample"
    }
  }
}

推荐阅读