gpt4 book ai didi

trace - 无法使用 SerilogTraceListener 将 Trace.WriteLine 重定向到 Serilog

转载 作者:行者123 更新时间:2023-12-04 04:07:29 27 4
gpt4 key购买 nike

在我的一个项目(.net core 3.1)中,我需要一种将 System.Diagnostics.Trace.WriteLine 重定向到 Serilog 文件的方法。我找到了 SerilogTraceListener 包,它似乎是正确的候选者。

不幸的是,直到现在,我还无法找到使其工作的方法。

为了重现它,
1)创建一个.net core控制台项目
2)添加以下nuget包:Serilog、SerilogTraceListener、Serilog.Sink.Console、Serilog.Sink.File
3) 用下面的代码覆盖程序类代码

class Program
{
static void Main(string[] args)
{
// Works fine
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.File("log.txt")
.CreateLogger();
Log.Logger.Information("A string written using Logger.Information");

// Trace is written in the console but not in the file
Trace.Listeners.Add(new ConsoleTraceListener());
Trace.Listeners.Add(new global::SerilogTraceListener.SerilogTraceListener());
System.Diagnostics.Trace.WriteLine("A string written using Trace.WriteLine");
}
}

我做错了什么?

最佳答案

TL; 博士;您需要将 MinimumLevel 设置为 DebugVerbose 以查看 Trace.WriteLine 消息。

SerilogTraceListenerSystem.Diagnostic.TraceEventType 映射到 Serilog.LogEventLevel ,当你调用 Trace.WriteLine 时, it maps these events to the Debug log event level

这意味着 Serilog 的记录器正在接收 LogEventLevel.Debug 类型的消息。

Serilog 中默认配置的最低级别是 Information ,这意味着 Debug 消息正在被抑制。

您必须将 MinimumEventLevel 配置为 Debug (或 Verbose )才能查看 Trace.WriteLine 消息:

Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug() // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
.WriteTo.Console()
.WriteTo.File("log.txt")
.CreateLogger();

关于trace - 无法使用 SerilogTraceListener 将 Trace.WriteLine 重定向到 Serilog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62266901/

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