次のように、SerilogでWriteTo.RollingFileを使用しようとしています。
var log = new LoggerConfiguration().WriteTo.RollingFile(
@"F:\logs\log-{Date}.txt",
LogEventLevel.Debug).CreateLogger();
log.Information("this is a log test");
私の理解では、ログファイルは日付に基づいて作成され、名前が付けられ、毎日新しいファイルに書き込まれますが、同じ日に各ログエントリの新しいログファイルを取得しています。毎日新しいファイルに書き込むようにSerilogを構成するには、理想的には1日に1つのログファイルを作成する方法を教えてください。
また、7日以上経過したファイルを削除するアーカイブプロセスはありますか?
以下をお試しください:
var log = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.RollingFile(@"f:\log\log.txt", retainedFileCountLimit:7)
.CreateLogger();
ログファイル名は自動的にlog-20150819.txtなどになります。日付を指定する必要はありません。
今2018年、標準Serilog.Sinks.File
NuGetパッケージはローリングをサポートしています:
.WriteTo.File(@"e:\logs\skilliam.log", rollingInterval: RollingInterval.Day,
rollOnFileSizeLimit: true, fileSizeLimitBytes: 123456);
これのフォローアップとして、グローバルスコープの「ログ」インスタンスを使用していることを確認してください。
例:
Log.Information("Hello world");
同じファイルを使用するには、shared: true
を追加する必要があります
.WriteTo.RollingFile( "log- {Date} .txt"、shared:true)
これは、asp.net MVC 4/5アプリのweb.configでSerilogを使用する方法です。
Web.configに以下を追加します。
<add key="serilog:minimum-level" value="Information" />
<add key="serilog:minimum-level:override:Microsoft" value="Information" />
<add key="serilog:minimum-level:override:System" value="Information" />
<add key="serilog:using:RollingFile" value="Serilog.Sinks.RollingFile" />
<add key="serilog:write-to:RollingFile.pathFormat" value="./Logs/log-{Date}.txt" />
<add key="serilog:write-to:RollingFile.outputTemplate" value="{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] [{SourceContext}] {Message}{NewLine}{Exception}" />
<add key="serilog:write-to:RollingFile.retainedFileCountLimit" value="10" />
次にApplication_Start
of global.asax以下を追加します。
// Get application base directory
string basedir = AppDomain.CurrentDomain.BaseDirectory;
// Setup Serilog for logging
Log.Logger = new LoggerConfiguration()
.ReadFrom.AppSettings()
.WriteTo.RollingFile(basedir + "/Logs/log-{Date}.txt")
.CreateLogger();
マルチプロセス共有ログファイルを有効にするには、sharedをtrueに設定します:
コードで
.WriteTo.RollingFile("log-{Date}.txt", shared: true)
またはweb.config
<add key="serilog:write-to:RollingFile.shared" value="true" />