首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Serilog附加特性

Serilog附加特性
EN

Stack Overflow用户
提问于 2015-10-06 16:04:48
回答 1查看 4.6K关注 0票数 2

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

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

如果我发布如下声明:

代码语言:javascript
复制
Log.Information("{Property1}", "Value1");

我在Properties列中看到了如下内容:

代码语言:javascript
复制
<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>

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-07 08:49:21

要做到这一点有三种方法。

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

代码语言:javascript
复制
var specific = Log.ForContext("SomeProperty", 42);
specific.Information("This has properties attached");

第二种是使用浓缩器:

代码语言:javascript
复制
Log.Logger = new LoggerConfiguration()
    .Enrich.WithMachineName()
    // Other config...

第三个是LogContext

代码语言:javascript
复制
using (LogContext.PushProperty("SomeProperty", 42))
{
    Log.Information("This has properties attached");
}

这需要一些次要的设置,请查看Serilog wiki上的信息。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32974560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档