我正在尝试通过Serilog.Settings.AppSettings配置Serilog.Sinks.TextWriter
考虑到两个github描述中的琐碎示例,我都能正常工作。我可以通过控制台接收器正常工作。但是,我需要配置TextWriter以使用标准输出。出于某种原因,在我的平台(Linux上为Mono)上,使用Console似乎并没有成为标准配置,而另一方面,使用Console.Out的TextWriter却成为了标准配置。
以下程序化方法有效:
Logger = new LoggerConfiguration()
.ReadFrom.AppSettings()
.MinimumLevel.
.Enrich.WithThreadId()
.Enrich.FromLogContext()
.WriteTo.TextWriter(Console.Out, outputTemplate: "[{ThreadId} {Level:u3} {SourceContext}] {Message:lj}{NewLine}{Exception}")
.CreateLogger();
但是,以下appconfig片段导致什么都没有记录
<appSettings>
<add key="serilog:minimum-level" value="Verbose" />
<add key="serilog:enrich:FromLogContext" />
<add key="serilog:using:Thread" value="Serilog.Enrichers.Thread" />
<add key="serilog:enrich:WithThreadId" />
<add key="serilog:using:TextWriter" value="Serilog.Sinks.TextWriter" />
<add key="serilog:using:Console.Out" value="System" />
<add key="serilog:write-to:TextWriter" />
<add key="serilog:write-to:TextWriter.textWriter" value="Console.Out" />
<add key="serilog:write-to:TextWriter.outputTemplate" value="[{ThreadId} {Level:u3} {SourceContext}] {Message:lj}{NewLine}{Exception}" />
</appSettings>
我感觉是试图将Console.Out用作参数使事情变得混乱。
关于如何使用appconfig进行配置的任何建议?