gpt4 book ai didi

.net-core - 如何将serilog中的日志写入Linux和WIndows上的同一路径?

转载 作者:行者123 更新时间:2023-12-02 19:30:29 26 4
gpt4 key购买 nike

我有一个通过 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
}
}
]
},

最佳答案

您可以执行以下操作:

  1. 创建两个 appsettings 文件,第一个为默认文件,第二个为 appsettings.Linux.json enter image description here

  2. 根据应用程序运行的操作系统读取 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();
  3. 在 appsettings.Linux.json 中为记录器设置不同的值。对于 Windows:

    “参数”:{ "path": "日志\log-.log", "rollingInterval": "日", “保留文件计数限制”:5 }

对于 Linux:

 "Args": {
"path": "/var/log/appname",
"rollingInterval": "Day",
"retainedFileCountLimit": 5
}

关于.net-core - 如何将serilog中的日志写入Linux和WIndows上的同一路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61878626/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com