Kep*_*boy 5 logging serilog .net-core asp.net-core
我想要的是能够使用Serilog和Microsoft.Extensions.Logging(ILogger)来检测我的代码.并让它们都配置相同,以便它们写入相同的"接收器".我有一个ASPNET核心应用程序与日志工作和一些依赖库,使用Serilog,我想捕获日志输出(与ASPNET核心应用程序相同的地方).
我知道有一个nuget包可以使用ASPIL Core应用程序进行Serilog日志记录.但是,这个特殊的扩展
(WebAppBuilder).UseSerilog()
Run Code Online (Sandbox Code Playgroud)
似乎用serilog版本完全替换现有的ILoggerFactory,这会阻止我的ASPNET日志记录工作.如果我可以简单地插入serilog配置,使其像原始ASPNET核心机制一样工作,那就没问题.但是,Serilog.Settings.Configuration似乎没有忠实地将配置复制到Serilog.
令我困扰的是,他们不能共享共享配置,如果我使用其他使用NLog的库,如何将其集成到同一个日志记录基础架构中呢?
Serilog可以配置为与Microsoft.Extensions.Logging相同吗?如果是这样,这是如何实现的?
在你的Program.cs你将会有这个(在你加载之后IConfigurationRoot):
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.WriteTo.Console()
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
这将设置一个默认的“控制台”接收器以及您可以在appsettings.json配置文件中设置的任何其他内容。
在你的appsettings.json你可能有这个,例如:
{
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Error"
}
},
"WriteTo": [{
"Name": "Seq",
"Args": {
"serverUrl": "http://localhost:5341"
}
}],
"Enrich": ["FromLogContext"],
"Properties": {
"Application": "MyApplication"
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在您可以写入 static Serilog.Log:
Log.Information("JSON example {@Json}", json);
Run Code Online (Sandbox Code Playgroud)
或您注射的Microsoft.Extensions.Logging.ILogger:
logger.LogInformation("JSON example {@Json}", json);
Run Code Online (Sandbox Code Playgroud)
两者都会写入配置的接收器。
| 归档时间: |
|
| 查看次数: |
483 次 |
| 最近记录: |