首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何对枚举执行Serilog标记

如何对枚举执行Serilog标记
EN

Stack Overflow用户
提问于 2018-05-29 16:05:52
回答 1查看 555关注 0票数 1

我将我们的log4net记录器替换为使用Serilog的结构化日志记录。我想使用Enum在代码中强制执行标记,但我在如何做到这一点上遇到了一些困难。

现在我的日志是这样的:

代码语言:javascript
复制
logger.ErrorFormat("Proxy Logic for the Item {Item} failed. Swallow exception", Item); 

ErrorFormat signutare

代码语言:javascript
复制
void ErrorFormat(string format, params object[] args);

但我不知道如何将Item替换为LogTags.TagA之类的东西。当TagA是一个枚举时,这将为我的标记提供一种强制统一标准的方法。

所以它看起来像这样:

代码语言:javascript
复制
public enum LogTags
{
TagA,
...
}
public class Foo
{
     public void DoError()
     {
     logger.ErrorFormat("Proxy Logic for the Item {@LogTags.TagA} failed. Swallow exception", Item);
     }
}     

实现这一目标的最佳实践是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-30 08:25:03

Serilog中的属性名称需要是简单的、非点分隔的标识符,所以像Enum.LogTags.Item这样的名称不能直接工作。

如果一个简单的名称不够用,您可以使用类似于下面的模式来强制执行此嵌套:

代码语言:javascript
复制
logger.ErrorFormat(
  "Proxy Logic for the Item {@Enum} failed. Swallow exception",
  new { LogTags = new { Item }});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50579320

复制
相关文章

相似问题

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