Asp.net core mvc Serilog附加属性

Asp.net core mvc Serilog附加属性,asp.net-core-mvc,serilog,Asp.net Core Mvc,Serilog,我使用Serilog并将事件记录到SQL Server(使用Serilog、Serilog.Framework.logging和Serilog.Sinks.MSSqlServer库) 作为MVC6应用程序的一部分,当我记录事件并将选项设置为包含属性时,我会在XML列中看到一些附加属性 如果我发布如下声明: Log.Information("{Property1}", "Value1"); 我在“属性”列中看到如下内容: <properties> <property key

我使用Serilog并将事件记录到SQL Server(使用Serilog、Serilog.Framework.logging和Serilog.Sinks.MSSqlServer库)

作为MVC6应用程序的一部分,当我记录事件并将选项设置为包含属性时,我会在XML列中看到一些附加属性

如果我发布如下声明:

Log.Information("{Property1}", "Value1");
我在“属性”列中看到如下内容:

<properties>
  <property key="Property1">Value1</property>
  <property key="SourceContext">WebApplication4.Controllers.BaseController</property>
  <property key="ActionId">1b9f9c7e-7c5c-4b14-a30d-99f2ebc88c51</property>
  <property key="RequestId">80000191-0001-f000-b63f-84710c7967bb</property>
</properties>

价值1
WebApplication4.Controllers.BaseController
1b9f9c7e-7c5c-4b14-a30d-99f2ebc88c51
80000191-0001-f000-b63f-84710c7967bb

这些额外的财产来自哪里?我可以设置与这些类似的附加属性吗?如果是,我应该把它们放在哪里?如果我在消息中包含其他属性(类似于上面的Property1),我可以设置这些属性,但我可能希望包含消息中没有的其他属性。

有三种方法

第一种方法是使用
ForContext()
创建一个附加了特定属性的记录器实例:

var specific = Log.ForContext("SomeProperty", 42);
specific.Information("This has properties attached");
第二种是使用Enricher:

Log.Logger = new LoggerConfiguration()
    .Enrich.WithMachineName()
    // Other config...
第三个是
LogContext

using (LogContext.PushProperty("SomeProperty", 42))
{
    Log.Information("This has properties attached");
}

为此需要进行一些小的设置,请查看上的信息。

我记得读过关于前两个选项的内容,但由于某些原因,这些信息没有粘住。最后一个选择对我来说是新的,看起来是目前最理想的选择。我问的另一个问题是,当使用MVC(ActionId、RequestId等)时,额外的属性来自哪里?他们在哪里注射?它们代表什么?我已经看过了一些代码,但不记得它们是在哪里设置的。无论如何,我已经将你提供的信息标记为答案。谢谢。很抱歉回复晚了。您经常看到的与web相关的属性来自:。