serilog 的独立配置文件

Standalone configuration file for serilog

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

我正在寻找与 NLog provides. As described in Nlog#Configuration-file:

类似的内容

For a stand-alone *.exe application, files are searched as follows:

  • standard application configuration file (usually applicationname.exe.config)
  • applicationname.exe.nlog in application’s directory
  • NLog.config in application’s directory (Name sensitive; using docker dotnet core)
  • NLog.dll.nlog in a directory where NLog.dll is located (only if NLog isn't installed in the GAC)

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"
    }
  }
}