Tha*_*yen 6 settings logging stdout stderr serilog
我正在将 Serilog 用于我的 .netcore 应用程序并将日志写入控制台。所有日志都到达 STDOUT 流,但要求是 Error 和 Fatal 级别应该到达 STDERR 流。我已经添加"standardErrorFromLevel": "Error"到 appsetting.json 中 Writeto Console 设置的 arg 但不起作用,并且我的 STDERR 仍然为空。如何将错误和致命级别的日志重定向到 STDERR?请帮忙!!!
我试图实现与您相同的目标,并且我让它与 VS.Net 2020 和 Serilog 一起使用。
我的appSettings.json看起来像这样:
{
"Serilog": {
"WriteTo": [
{
"Name": "Console",
"Args": {
"standardErrorFromLevel": "Error"
}
}
],
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试将 Web 项目属性、调试、常规、启动配置文件中的命令行参数设置为:
>c:\temp\stdout.log 2>c:\temp\stderr.log。并且日志记录很好地分为这两个文件。
我的 .Net6 program.cs 包含 SeriLog 的以下内容:
builder.Host.UseSerilog((context, configuration) => configuration
.Enrich.FromLogContext()
.ReadFrom.Configuration(context.Configuration)
})
);
Run Code Online (Sandbox Code Playgroud)
为了使 SeriLog 成为控制器中依赖注入的默认值ILogger<T>,我添加了:
builder.Services.AddLogging(x =>
{
x.ClearProviders();
x.AddSerilog(dispose: true);
});
Run Code Online (Sandbox Code Playgroud)
也许您正在使用 DI 而实际上根本没有使用 SeriLog?
如果您想尝试在代码中设置属性,只需添加
.WriteTo.Async(x =>
{
x.Console(standardErrorFromLevel: LogEventLevel.Error);
}
Run Code Online (Sandbox Code Playgroud)
里面UseSerilog()。
我必须安装以下 SeriLog 软件包:
后者不应该在那里相关。