Nig*_*lis 5 c# serilog asp.net-core asp.net-core-2.1
在我的 .NET Core 2.1 项目中,我安装了Serilog,但由于某种原因它不会记录信息事件。但它会记录错误事件。
在我的应用程序设置中,我有:
"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"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
在我的 Startup.cs 中我有:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.ReadFrom.Configuration(Configuration)
.CreateLogger();
services.AddLogging(logging =>
logging.AddSerilog(dispose: true)
);
Run Code Online (Sandbox Code Playgroud)
在我的代码中有:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
logger.LogInformation(我logger.LogDebug也尝试过,但这也不起作用)不输出任何内容。但logger.LogError确实记录了正确的错误。
我尝试将默认级别更改为详细,看看这是否会使其生效,但我似乎无法将错误以下的任何内容输出到日志文件中。
您必须将ILogger<HomeController>接口注入到构造函数中HomeController。
private readonly Microsoft.Extensions.Logging.ILogger _log;
public HomeController(ILogger<HomeController> logger)
{
_log = logger;
}
Run Code Online (Sandbox Code Playgroud)
您必须告诉asp.net core从哪里读取配置(将其添加到Program.cs):
public static IConfiguration Configuration { get; } = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", optional: true)
.Build();
Run Code Online (Sandbox Code Playgroud)
在 Program.cs 中添加UseSerilog:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseSerilog();
Run Code Online (Sandbox Code Playgroud)
结果:
| 归档时间: |
|
| 查看次数: |
15054 次 |
| 最近记录: |