我喜欢在我的应用程序运行时使用最新的日志文件打开一个编辑器。我有一个 10MB 的文件大小限制和天作为滚动间隔。
当第一个文件log-20210314.log
填满并且 serilog 开始一个新文件时,新文件有一个新名称log-20210314_001.log
,所以我需要更改我在编辑器中查看的文件。
相比之下,log4j 的 RollingFileAppender默认翻转策略是这样工作的:
翻转次数 | 主动输出目标 | 存档的日志文件 | 描述 |
---|---|---|---|
0 | foo.log | - | 所有日志记录都将转到初始文件。 |
1 | foo.log | foo-1.log | 在第一次翻转期间,foo.log 被重命名为 foo-1.log。一个新的 foo.log 文件被创建并开始被写入。 |
2 | foo.log | foo-2.log,foo-1.log | 在第二次翻转期间,foo.log 被重命名为 foo-2.log。一个新的 foo.log 文件被创建并开始被写入。 |
3 | foo.log | foo-3.log、foo-2.log、foo-1.log | 在第三次翻转期间,foo.log 被重命名为 foo-3.log。一个新的 foo.log 文件被创建并开始被写入。 |
在该示例中,如果我的编辑器打开到foo.log
,我将始终看到最新的日志条目(翻转后文件立即为空的几秒钟除外)。
如何使 serilog-sinks-file 以这种方式运行?
我的配置:
{
"Serilog": {
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "File",
"Args": {
"path": ".\\logs\\log-.log",
"rollingInterval": "Day",
"rollOnFileSizeLimit": true,
"fileSizeLimitBytes": 1000000,
"restrictedToMinimumLevel": "Debug",
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] ({SourceContext}) {Message}{NewLine}{Exception}"
}
}
]
}
}