2017-03-15 5 views
3

本番環境でロギングレベルをデバッグからエラーに変更することが可能であるかどうかを理解したいと思います。Serilog - コードを変更しないでロギング粒度を変更する方法

Nlogには、設定ファイル内にログの細かさを設定できる場所があります。

<level value="Info" /> 

これは、デバッグレベルのエラーを取得するためにUAT環境でその場で変更することができ、その後しばらくして、私は戻っINFOにそれを変更することができます。これは単なる設定の変更であり、コードの変更はありません。

私たちはSerilogと同様のシナリオをどのように扱いますか?

Log.Logger = new LoggerConfiguration() 
.MinimumLevel.Debug() 
.WriteTo.RollingFile("log-{Date}.txt") 
.WriteTo.LiterateConsole(restrictedToMinimumLevel: LogEventLevel.Information) 
.CreateLogger(); 

私だけではエラー・ログが必要な場合は、その後、私の設定が

Log.Logger = new LoggerConfiguration() 
.MinimumLevel.Error() 
.WriteTo.RollingFile("log-{Date}.txt") 
.WriteTo.LiterateConsole(restrictedToMinimumLevel: LogEventLevel.Information) 
.CreateLogger(); 

のようになりますが、それは、コードの変更を加えることなく、その場でErrorに最低限のレベルを変更することは可能です??

答えて

3

Serilogは、App.config/Web.configの場合はXML app settings provider、.NET Coreの構成サブシステムの場合はJSON configuration providerです。

Install-Package Serilog.Settings.AppSettings 

は、あなたの設定ファイルに<appSettings>にキーを追加します:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="serilog:minimum-level" value="Debug" /> 

そして、ロガーの設定時にこれを読んを、App.config/Web.configファイルでこれを行う最初のパッケージをインストールするには

Log.Logger = new LoggerConfiguration() 
    .ReadFrom.AppSettings() 
    .WriteTo.RollingFile("log-{Date}.txt") 
    .WriteTo.LiterateConsole(restrictedToMinimumLevel: LogEventLevel.Information) 
    .CreateLogger(); 

シンクに書き込むエントリを設定したり、プロパティを充実させたりすることもできます。フルセットについては、上記のプロバイダーのリンクにあるドキュメントを参照してください。

関連する問題