如何将 serilog 中的日志写入 Linux 和 WIndows 上的相同路径?
How to write logs in serilog to same path on Linux and WIndows?
我有一个通过 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 文件,一个应该是默认文件,第二个 appsettings.Linux.json
根据OS应用程序运行读取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 中为记录器设置不同的值。
对于 Windows:
"Args":{
"path": "Logs\log-.log",
"rollingInterval": "Day",
"retainedFileCountLimit": 5
}
对于Linux:
"Args": {
"path": "/var/log/appname",
"rollingInterval": "Day",
"retainedFileCountLimit": 5
}
我有一个通过 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 文件,一个应该是默认文件,第二个 appsettings.Linux.json
根据OS应用程序运行读取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 中为记录器设置不同的值。 对于 Windows:
"Args":{ "path": "Logs\log-.log", "rollingInterval": "Day", "retainedFileCountLimit": 5 }
对于Linux:
"Args": {
"path": "/var/log/appname",
"rollingInterval": "Day",
"retainedFileCountLimit": 5
}