gpt4 book ai didi

c# - 读取 serilog 的 appconfig 文件

转载 作者:行者123 更新时间:2023-12-04 01:45:52 24 4
gpt4 key购买 nike

我有 Logger.cs我正在初始化 serilog 设置的类,如下所示:

_logger = new LoggerConfiguration()
.ReadFrom.AppSettings()
.MinimumLevel.Debug()
.WriteTo.File(_filepath, restrictedToMinimumLevel: LogEventLevel.Debug, shared: true, rollOnFileSizeLimit: true)
.CreateLogger();

我想从 app.config 文件中读取文件的大小。
我有如下的 app.config 文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="serilog:using:File" value="Serilog.Sinks.File" />
<add key="serilog:write-to:File.fileSizeLimitBytes" value="2000" />
</appSettings>
</configuration>

但看起来像 appsettings根本不读。因为我可以看到生成的文件超过 2kb。
我在这里错过了什么?

我的记录器类将如何从 app.config 读取文件,我是否错过了 assemblyinfo 类中的任何设置?

最佳答案

Serilog 配置通过 App.config不会与您通过 C# 代码定义的配置“合并”......这些是附加的。这意味着,在您的示例中,您正在配置两个独立的接收器,它们都写入文件。

但是,因为您没有在 App.config 中指定接收器的文件路径,所以它忽略了该接收器并且没有配置它,并且只配置了第二个接收器(在 C# 代码中)。

如果要使用 App.config 配置,那么除了 fileSizeLimitBytes 之外,您的 XML 还应包含文件路径。 :

<configuration>
<appSettings>
<add key="serilog:minimum-level" value="Debug"/>
<add key="serilog:using:File" value="Serilog.Sinks.File" />
<add key="serilog:write-to:File.path" value="log.txt" />
<add key="serilog:write-to:File.rollOnFileSizeLimit" value="true" />
<add key="serilog:write-to:File.fileSizeLimitBytes" value="2000" />
</appSettings>
</configuration>

而您的 C# 代码只会从 App.config 读取设置,而没有“额外”接收器。
_logger = new LoggerConfiguration()
.ReadFrom.AppSettings()
.CreateLogger();

ps:注意我还配置了 MinimumLevel通过 App.config。这不是必需的,但如果已经通过 App.config 配置 Serilog 接收器,则通常是有意义的。

关于c# - 读取 serilog 的 appconfig 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55252693/

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