无法让 Serilog 写入 RollingFile 日志
Can't get Serilog to write to a RollingFile log
我正在尝试在 dotnet webapi 应用程序中使用 Serilog。我需要登录到控制台和滚动日志文件。
一切都出现在控制台上,但滚动日志文件中没有任何内容出现,我在任何地方都没有收到任何错误。
我在我的代码中设置了 serilog,如下所示:
// in program.cs Main
var configuration = new ConfigurationBuilder()
.SetBasePath(BASEDIR)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.Build();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.Enrich.FromLogContext()
.Enrich.With(new ThreadIdEnricher())
.CreateLogger();
// startup.cs Configure
app.UseSerilogRequestLogging();
在 appsetting.json 我有
{
"Serilog": {
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft.AspNetCore.Mvc.Internal": "Warning",
"Microsoft.AspNetCore.Authentication": "Warning",
"Microsoft.AspNetCore": "Warning",
"Microsoft": "Warning",
"System": "Warning"
}
},
"WriteTo": [
{
"Name": "Async",
"Args": {
"configure": [
{
"Name": "Console",
"Args": {
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u1} TID:{ThreadId} {Message:lj}{NewLine}{Exception}",
"theme": "Serilog.Sinks.SystemConsole.Themes.SystemConsoleTheme::Literate, Serilog.Sinks.Console"
}
}
]
}
},
{
"Name": "Async",
"Args": {
"configure": [
{
"Name": "RollingFile",
"Args": {
"pathFormat": "c:\logs\{Date}.log",
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u1} TID:{ThreadId} {Message:lj}{NewLine}{Exception}",
"buffered": false,
"rollingInterval": "Serilog.RollingInterval.Day, Serilog.Sinks.File",
"retainedFileCountLimit": 7
}
}
]
}
}
]
}
}
你试过改成静态文件名吗?路径存在吗?他们 github 页面的自述文件中的配置似乎与您的有点不同:https://github.com/serilog/serilog-sinks-file#user-content-json-appsettingsjson-configuration:~:text=node%2C%20%3A-,%7B,%7D,-See%20the%20XML
也可以尝试从在代码中进行设置然后返回到配置文件?
我正在尝试在 dotnet webapi 应用程序中使用 Serilog。我需要登录到控制台和滚动日志文件。
一切都出现在控制台上,但滚动日志文件中没有任何内容出现,我在任何地方都没有收到任何错误。
我在我的代码中设置了 serilog,如下所示:
// in program.cs Main
var configuration = new ConfigurationBuilder()
.SetBasePath(BASEDIR)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.Build();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.Enrich.FromLogContext()
.Enrich.With(new ThreadIdEnricher())
.CreateLogger();
// startup.cs Configure
app.UseSerilogRequestLogging();
在 appsetting.json 我有
{
"Serilog": {
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft.AspNetCore.Mvc.Internal": "Warning",
"Microsoft.AspNetCore.Authentication": "Warning",
"Microsoft.AspNetCore": "Warning",
"Microsoft": "Warning",
"System": "Warning"
}
},
"WriteTo": [
{
"Name": "Async",
"Args": {
"configure": [
{
"Name": "Console",
"Args": {
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u1} TID:{ThreadId} {Message:lj}{NewLine}{Exception}",
"theme": "Serilog.Sinks.SystemConsole.Themes.SystemConsoleTheme::Literate, Serilog.Sinks.Console"
}
}
]
}
},
{
"Name": "Async",
"Args": {
"configure": [
{
"Name": "RollingFile",
"Args": {
"pathFormat": "c:\logs\{Date}.log",
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u1} TID:{ThreadId} {Message:lj}{NewLine}{Exception}",
"buffered": false,
"rollingInterval": "Serilog.RollingInterval.Day, Serilog.Sinks.File",
"retainedFileCountLimit": 7
}
}
]
}
}
]
}
}
你试过改成静态文件名吗?路径存在吗?他们 github 页面的自述文件中的配置似乎与您的有点不同:https://github.com/serilog/serilog-sinks-file#user-content-json-appsettingsjson-configuration:~:text=node%2C%20%3A-,%7B,%7D,-See%20the%20XML 也可以尝试从在代码中进行设置然后返回到配置文件?