mos*_*aka 8 c# serilog .net-core
当Serilog通过配置文件(使用 nuget 包Serilog.Settings.Configuration)进行配置时,达到大小限制时不会创建滚动日志文件。
正如这个问题和这个问题中所建议的,我正在使用Serlog.Sinks.File(版本4.0.0),但未创建滚动文件。
这是我的 Serilog 配置文件appsettings.json:
{
"Serilog": {
"Using": [
"Serilog.Sinks.File",
"Serilog.Sinks.Console"
],
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "%LogPath%\\Logs\\log.txt",
"rollOnFileSizeLimit ": true,
"retainedFileCountLimit ": 20,
"rollingInterval": "Day",
"fileSizeLimitBytes": 10000
}
},
{
"Name": "Console"
}
],
"Enrich": [ "FromLogContext", "WithMachineName" ],
"Destructure": [
],
"Properties": {
}
}
}
Run Code Online (Sandbox Code Playgroud)
Serilog这是我告诉从配置中读取的代码:
{
"Serilog": {
"Using": [
"Serilog.Sinks.File",
"Serilog.Sinks.Console"
],
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "%LogPath%\\Logs\\log.txt",
"rollOnFileSizeLimit ": true,
"retainedFileCountLimit ": 20,
"rollingInterval": "Day",
"fileSizeLimitBytes": 10000
}
},
{
"Name": "Console"
}
],
"Enrich": [ "FromLogContext", "WithMachineName" ],
"Destructure": [
],
"Properties": {
}
}
}
Run Code Online (Sandbox Code Playgroud)
当文件大小达到 10KB 时,它会停止增长,并且不会创建新的日志文件。顺便说一句,白天滚动仍然有效。
我也通过Serilog代码配置验证了,它有效,所以我认为它与sink无关......
这是有效的代码
//previous code ommited...
.ConfigureAppConfiguration((hostContext, configApp) =>
{
Environment.SetEnvironmentVariable("LogPath", AppDomain.CurrentDomain.BaseDirectory);
configApp.AddJsonFile("appsettings.json", optional: false);
configApp.AddEnvironmentVariables();
configApp.AddCommandLine(args);
})
.UseSerilog((hostingContext, loggerConfiguration) =>
{
loggerConfiguration
.ReadFrom.Configuration(hostingContext.Configuration);
.WriteTo.Console();
})
Run Code Online (Sandbox Code Playgroud)
那么当配置文件达到文件大小时,如何让 Serilog 创建滚动文件呢?
mos*_*aka 10
我下载并用Serilog.Settings.Configuration源码调试,发现我这里犯了一个愚蠢的错误。配置文件中的无效参数名称有一个额外的空格。
"rollOnFileSizeLimit ": true,
"retainedFileCountLimit ": 20,
Run Code Online (Sandbox Code Playgroud)
应该
"rollOnFileSizeLimit": true,
"retainedFileCountLimit": 20,
Run Code Online (Sandbox Code Playgroud)
纠正此问题后,一切正常。
我想也许该项目应该在匹配键之前修剪空格......
| 归档时间: |
|
| 查看次数: |
7647 次 |
| 最近记录: |