gpt4 book ai didi

c# - Serilog - 单独的信息文件,使用 appsetting.json 的异常(exception)

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

我正在使用滚动将所有日志写入一个文件。但我想通过信息警告异常滚动文件将它们分开。

我当前的配置是这样的

     "Serilog": {
"WriteTo": [
{
"Name": "RollingFile",
"Args": {
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] {Message}{NewLine}{Exception}",
"pathFormat": "logs\\log-{Hour}.log",
"rollOnFileSizeLimit ": true,
"retainedFileCountLimit ": null,
"rollingInterval": "Hour",
"fileSizeLimitBytes": 5000000
}
}
]
},

类别

public ILogger GetLogger()
{
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
_logger =
new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();

return _logger ;
}

最佳答案

在 Serilog 中,您可以通过 sub-loggers 进行此分离。或通过 Serilog.Sinks.Map .

您无法通过 appsetting.json 配置整个管道,但您可以使用自定义键轻松配置 appsetting.json 中每个文件的路径您的选择,并在通过代码配置日志管道时使用它。


使用 sub-loggers 的示例每个过滤器都应用了一个过滤器:

Log.Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Logger(c =>
c.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Debug)
.WriteTo.File("Debug.log"))
.WriteTo.Logger(c =>
c.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Error)
.WriteTo.File("Error.log"))
.CreateLogger();

Log.Debug("This goes to Debug.log only");
Log.Error("This goes to Error.log only");

Log.CloseAndFlush();

使用 Serilog.Sinks.Map 的示例将每个 LogEventLevel 映射到不同的文件。

Log.Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Map(evt => evt.Level, (level, wt) => wt.File($"{level}.log"))
.CreateLogger();

Log.Debug("This goes to Debug.log only");
Log.Error("This goes to Error.log only");

Log.CloseAndFlush();

关于c# - Serilog - 单独的信息文件,使用 appsetting.json 的异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61996512/

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