簡體   English   中英

讀取serilog的appconfig文件

[英]reading appconfig file for serilog

我有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類中的任何設置?

通過App.config的Serilog配置不會與您通過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:請注意,我還通過App.config配置了MinimumLevel 這不是一個要求,但如果已經通過App.config配置Serilog接收器通常是有意義的。

您可以混合搭配XML和基於代碼的配置,但每個接收器必須使用XML配置,或者在代碼中添加代碼接收器,不能通過應用程序設置進行修改。

因此,如果您需要使用App.config文件,則需要將所有配置移動到它,如下所示

<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="logs\log.txt" />
  <add key="serilog:write-to:File.shared" value="true" />
  <add key="serilog:write-to:File.rollOnFileSizeLimit" value="true" />
  <add key="serilog:write-to:File.fileSizeLimitBytes" value="2000" />
</appSettings>

並使用下面的代碼創建記錄器實例

_logger = new LoggerConfiguration()
    .ReadFrom.AppSettings()
    .CreateLogger();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM