我正在开发一个Windows 10应用程序(UWP),并使用Serilog实现日志记录。
下面是一个appsettings.json文件,我在其中配置Serilog以写入滚动文件池(以及其他池)。
然而,我需要在运行时能够更改pathFormat属性,以便将日志写入应用程序的“LocalState”文件夹。
问:Serilog是否支持从配置中读取,然后在运行时覆盖特定参数?
我的当前解决方法是在JSON中使用一个名为“#{LogFilePath}”的令牌,并在运行时替换该文件。
我找到了以下内容,但在我的情况下无法使用环境变量:指定Serilog滚动文件路径的目录
下面是一个appsettings.json文件,我在其中配置Serilog以写入滚动文件池(以及其他池)。
{
"Serilog": {
"Using": [ "Serilog.Sinks.Console" ],
"MinimumLevel": "Debug",
"WriteTo": [
{ "Name": "Console" },
{
"Name": "RollingFile",
"Args": {
"pathFormat": "#{LogFilePath}log-{Date}.txt",
"fileSizeLimitBytes": "3000",
"retainedFileCountLimit": "2"
}
}
],
"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
"Properties": {
"Application": "Sample"
}
}
}
我随后调用以下代码:
var configuration = new ConfigurationBuilder()
.AddJsonFile(sampleFile.Path)
.Build();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
然而,我需要在运行时能够更改pathFormat属性,以便将日志写入应用程序的“LocalState”文件夹。
问:Serilog是否支持从配置中读取,然后在运行时覆盖特定参数?
我的当前解决方法是在JSON中使用一个名为“#{LogFilePath}”的令牌,并在运行时替换该文件。
我找到了以下内容,但在我的情况下无法使用环境变量:指定Serilog滚动文件路径的目录
appsettings.json
但在Startup.cs
中通过代码重写某些设置? - BaltoStar