我试图定期清除日志文件。所以,在serilog.sink.file v5.0.0中搜索时,我发现了一个名为retainedFileTimeLimit的东西,我尝试了它,但它不起作用。
这是我的代码->
static void Main(string[] args)
{
var _loggger = new LoggerConfiguration()
.WriteTo.File(
new JsonFormatter(),
filePath,
Serilog.Events.LogEventLevel.Information,
retainedFileTimeLimit: TimeSpan.FromMinutes(2),
fileSizeLimitBytes: 10000,
rollOnFileSizeLimit: true,
retainedFileCountLimit: 40,
flushToDiskInterval: TimeSpan.FromSeconds(1),
rollingInterval: RollingInterval.Day
)
.CreateLogger();
for ( int i = 0; i < 20; i++ )
{
_loggger.Information("Logging Info");
_loggger.Warning("Logging Warning");
}
}
它会在文件达到fileSizeLimitance时删除该文件:10000并创建一个新文件,即使我仍然在10分钟的时间范围内,我的retainedFileCountLimit:50和rollingInterval:RollingInterval.Day.
但是,当我设置retainedFileTimeLimit时:TimeSpan.FromDays(10)在文件大小超过限制时创建一个新文件,并且不删除旧文件。
我到处找这个,但除了this GitHub issue,我什么也没找到
2条答案
按热度按时间k3bvogb11#
在serilog src中,您可以找到一个调用“ShouldRetainFile”方法,它过滤要删除的日志文件。它必须是“index >= _retainedFileCountLimit.Value - 1”和“file.DateTime.Value < now.Subtract(_retainedFileTimeLimit.Value)”
r1zhe5dt2#
也许你可以自己删除日志文件夹🤣