我正在尝试将WriteTo.RollingFile与Serilog一起使用,如下所示:
var log = new LoggerConfiguration().WriteTo.RollingFile(
@"F:\logs\log-{Date}.txt",
LogEventLevel.Debug).CreateLogger();
log.Information("this is a log test");
我的理解是日志文件将根据日期创建和命名,并且它每天都会写入一个新文件,但是我在同一天为每个日志条目获取一个新的日志文件!如何配置Serilog每天写入一个新文件,理想情况下我每天只有一个日志文件?
是否有任何归档过程来删除超过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”实例。
例:
Log.Information("Hello world");
要使用相同的文件,您必须添加shared: true
.WriteTo.RollingFile(“log- {Date} .txt”,shared:true)
这是一种在asp.net MVC 4/5应用程序中使用Serilog和web.config的方法。
在您的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" />
然后在global.asax的Application_Start
中添加以下内容:
// 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" />