在我的一个项目(.net core 3.1)中,我需要一种将 System.Diagnostics.Trace.WriteLine 重定向到 Serilog 文件的方法。我发现 SerilogTraceListener 包似乎是合适的候选者。
不幸的是,到目前为止,我还没有找到让它发挥作用的方法。
要重现它,
1)创建一个.net core控制台项目
2)添加以下nuget包:Serilog,SerilogTraceListener,Serilog.Sink.Console,Serilog.Sink.File
3)通过以下内容覆盖Program类代码
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");
}
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?