gon*_*ong 15 c# serilog asp.net-core
出于某种原因,我发现很难理解Serilog配置发生了什么.我有一个带有.NET Core 2.1的web api并已安装serilog.sink.logstash.我的创业公司有:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
var serverURL = Configuration.GetSection("Logging")["logstashServer"];
var logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.Enrich.WithProperty("Enviroment", env.EnvironmentName)
.Enrich.WithProperty("ApplicationName", "MyApp")
.WriteTo.LogstashHttp(serverURL);
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
logger.WriteTo.Console();
}
loggerFactory.AddSerilog();
Log.Logger = logger.CreateLogger();
app.UseCors("CorsPolicy");
app.UseMvc();
}
Run Code Online (Sandbox Code Playgroud)
我的appsettings有一节:
"Logging": {
"logstashServer": "http://192.168.0.6:8101",
"IncludeScopes": false,
"Serilog": {
"MinimumLevel": {
"Default": "Error",
"Override": {
"Microsoft": "Error",
"Microsoft.AspNetCore.Hosting": "Error",
"Microsoft.AspNetCore.Mvc": "Error",
"System": "Error"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
无论我做什么,我都会在控制台和logstash中看到,而不是记录很多不需要的信息,如:
[14:27:54 INF]执行的操作方法MyApp.Controllers.LoggerController.Post(MyApp),返回结果Microsoft.AspNetCore.Mvc.OkResult 0.0771ms.
MyApp> [14:27:54 INF]执行HttpStatusCodeResult,设置HTTP状态代码200
MyApp> [14:27:54 INF]执行操作MyApp.Controllers.LoggerController.Post(MyApp)2.0855ms
等等.为什么我会看到那些因为我有最小级别错误?
Kir*_*kin 18
虽然您已添加配置以appsettings.json覆盖Serilog日志记录级别,但您实际上并未将所述配置传递给Serilog.在最简单的级别,这需要您安装Serilog.Settings.Configuration nuget包.完成后,您可以添加一个调用ReadFrom.Configuration,如下所示:
var logger = new LoggerConfiguration()
.ReadFrom.Configuration(Configuration.GetSection("Logging"))
.Enrich.FromLogContext()
// ...
Run Code Online (Sandbox Code Playgroud)
这是你为了得到你的配置到Serilog需要,但你有怎么你还在使用等问题ILoggerFactory的内部Configure(这在ASP.NET 2.0的核心变化).这可能对您造成的一个问题是ASP.NET Core的Console提供程序和Serilog Console接收器都在编写日志.如果你需要任何帮助,那么它在网上有很好的文档,但是如果绝对必要,你当然可以创建额外的Stack Overflow问题.
Nicholas Blumhardt 在博客中发布了关于ASP.NET Core 2.0日志记录更改的内容 - 这是一个有用的阅读,应该有助于大大简化您的Serilog + ASP.NET Core体验.
在研究如何在.NET Core 2.1 API项目上安装,配置和使用Serilog时,我发现本文非常有用。
关于配置文件,在Serilog GitHub存储库上有一个有关Serilog.Settings.Configuration包的特定页面。
| 归档时间: |
|
| 查看次数: |
15431 次 |
| 最近记录: |