我有一个通过appsettings.json文件配置Serilog的应用程序,我在Windows上开发了该应用程序,但已将其部署到linux。如何将日志写入相对目录Logs / logfile.log?
只是在部署文件夹中更改appsettings.json是一个不错的选择吗?
现在这是我正在使用的配置:
"Serilog": {
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.MSSQLServer" ],
"Enrich": [ "FromLogContext", "WithMachineName", "WithProcessId", "WithThreadId" ],
"MinimumLevel": {
"Default": "Warning",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"WriteTo": [
{
"Name": "Console",
"Args": {
"outputTemplate": "[{Timestamp:HH:mm:ss} {SourceContext} [{Level}] {Message}{NewLine}{Exception}",
"theme": "Serilog.Sinks.SystemConsole.Themes.SystemConsoleTheme::Grayscale, Serilog.Sinks.Console"
}
},
{
"Name": "File",
"Args": {
"path": "Logs\\log-.log",
"rollingInterval": "Day",
"retainedFileCountLimit": 5
}
}
]
},
您可以做的是以下事情:
根据运行应用程序的操作系统,读取appsettings文件。
var env = RuntimeInformation.IsOSPlatform(OSPlatform.Linux) ?
"Linux" : "Windows";
Configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{env}.json", true)
.AddEnvironmentVariables()
.Build();
在appsettings.Linux.json中为记录器设置不同的值