通过Serilog.Settings.AppSettings配置Serilog.Sinks.TextWriter

时间:2018-10-17 22:56:39

标签: c# mono serilog

我正在尝试通过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进行配置的任何建议?

0 个答案:

没有答案