C# 如何解释ASP.NET Core 2.1中的Serilog配置?

C# 如何解释ASP.NET Core 2.1中的Serilog配置?,c#,asp.net-core,serilog,C#,Asp.net Core,Serilog,由于某些原因,我发现很难理解Serilog配置的情况。我有一个带有.NET Core 2.1的web api,并安装了serilog.sink.logstash。我的创业公司有: public void配置(IApplicationBuilder应用程序、IHostingEnvironment环境、iLogger工厂) { var serverURL=Configuration.GetSection(“Logging”)[“logstashServer”]; 变量记录器=新记录器配置() .En

由于某些原因,我发现很难理解Serilog配置的情况。我有一个带有.NET Core 2.1的web api,并安装了
serilog.sink.logstash
。我的创业公司有:

public void配置(IApplicationBuilder应用程序、IHostingEnvironment环境、iLogger工厂)
{
var serverURL=Configuration.GetSection(“Logging”)[“logstashServer”];
变量记录器=新记录器配置()
.Enrich.FromLogContext()的
.Enrich.WithProperty(“环境”,环境名称)
.Enrich.WithProperty(“应用程序名称”、“MyApp”)
.WriteTo.LogstashHttp(服务器URL);
if(env.IsDevelopment())
{         
app.UseDeveloperExceptionPage();
logger.WriteTo.Console();
}
loggerFactory.AddSerilog();
Log.Logger=Logger.CreateLogger();
附录UseCors(“公司政策”);
app.UseMvc();
}
My appsettings有一个部分:

“日志记录”:{
“logstashServer”:http://192.168.0.6:8101",
“包含范围”:错误,
“Serilog”:{
“最低级别”:{
“默认值”:“错误”,
“覆盖”:{
“Microsoft”:“错误”,
“Microsoft.AspNetCore.Hosting”:“错误”,
“Microsoft.AspNetCore.Mvc”:“错误”,
“系统”:“错误”
}
}
}
}
无论我做什么,我在console和logstash中都会看到许多不需要的信息被记录下来,如:

[14:27:54 INF]执行的操作方法MyApp.Controllers.LoggerController.Post(MyApp),在0.0771ms内返回结果Microsoft.AspNetCore.Mvc.OkResult。
MyApp>[14:27:54 INF]执行HttpStatusCodeResult,设置HTTP状态代码200
MyApp>[14:27:54 INF]在2.0855毫秒内执行了操作MyApp.Controllers.LoggerController.Post(MyApp)


等等。为什么我会看到这些,因为我有最小级别错误?

虽然您已经将配置添加到
appsettings.json
以覆盖Serilog日志记录级别,但您实际上并没有将所述配置传递到Serilog。在最简单的级别上,这需要您安装nuget软件包。完成此操作后,可以添加对
ReadFrom.Configuration
的调用,如下所示:

var logger = new LoggerConfiguration()
    .ReadFrom.Configuration(Configuration.GetSection("Logging"))
    .Enrich.FromLogContext()
    // ...
这就是将配置放入Serilog所需的全部内容,但是在
Configure
()中如何仍然使用
iLogger工厂
,确实存在其他问题。这可能给您带来的问题之一是ASP.NET Core的控制台提供程序和Serilog控制台接收器都在写入日志。如果您需要这些方面的帮助,它在网上有很好的文档记录,但是如果绝对必要,您当然可以创建额外的堆栈溢出问题


Nicholas Blumhardt关于ASP.NET Core 2.0日志记录更改的介绍-这是一本有用的书,应该可以帮助您大大简化Serilog+ASP.NET Core体验。

了解如何在.NET Core 2.1API项目上安装、配置和使用Serilog,我发现非常有用

关于配置文件,在Serilog GitHub存储库中有一个关于包的特定页面