【发布时间】:2019-07-26 10:41:36
【问题描述】:
在我的 .NET Core 2.1 项目中,我安装了 Serilog,但由于某种原因,它不会记录信息事件。不过,它会记录错误事件。
在我的 appSettings 我有:
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Fatal",
"System": "Fatal"
}
},
"WriteTo": [
{
"Name": "File",
"Args": {
"restrictedToMinimumLevel": "Information",
"path": "D:\\Web\\098_VDSNet4\\Logs\\API.AdminPortal\\.txt",
"rollingInterval": "Day"
}
}
]
}
在我的 Startup.cs 中有:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.ReadFrom.Configuration(Configuration)
.CreateLogger();
services.AddLogging(logging =>
logging.AddSerilog(dispose: true)
);
在我的代码中:
public IActionResult Post(Address address)
{
string functionName = "AddressController:Post";
try
{
logger.LogInformation($"{functionName}");
// TOOD Additional Address validation
addressRepository.Add(address);
addressRepository.Save();
return Ok(address);
}
catch(Exception ex)
{
logger.LogError(ex, $"{functionName}: There was an error creating the address");
return BadRequest();
}
}
logger.LogInformation(我也尝试过logger.LogDebug,这也不起作用)不输出任何内容。但是logger.LogError 确实记录了正确的错误。
我已尝试将默认级别更改为 Verbose 以查看是否会启动它,但我似乎无法将任何低于 Error 的内容输出到日志文件。
【问题讨论】:
-
是的,在控制器 ctor 我有 ILogger
记录器 -
您是否有第二个
.json文件,例如appSettings.Development.json或appSettings.Production.json,这是覆盖最低级别? -
另外,我看到你正在使用
AddSerilog()- 这已被UseSerilog()取代,这避免了 Serilog 和默认记录器实现之间的尴尬交互;所有细节都在:nblumhardt.com/2017/08/use-serilog - HTH
标签: c# asp.net-core asp.net-core-2.1 serilog