如何对一个枚举强制执行Serilog标记?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (27)

我使用Serilog将log4net记录器更换为结构化记录。我想使用Enum在代码中强制标记,但是我在如何操作时遇到了一些困难。现在我的日志看起来像这样:

logger.ErrorFormat("Proxy Logic for the Item {Item} failed. Swallow exception", Item); 

ErrorFormatsignutare是:

void ErrorFormat(string format, params object[] args);

但我不知道如何替换Item成类似的东西Enum.LogTags.Item

所以它看起来像:

logger.ErrorFormat("Proxy Logic for the Item {@Enum.LogTags.Item} failed. Swallow exception", Item); 

实现这种目标的最佳做法是什么?

提问于
用户回答回答于

Serilog中的属性名称必须是简单的,非虚线的标识符,所以名称Enum.LogTags.Item不会直接起作用。如果一个简单的名称是不够的,你可以用下面的模式强制这个嵌套:

logger.ErrorFormat(
  "Proxy Logic for the Item {@Enum} failed. Swallow exception",
  new { LogTags = new { Item }});

所属标签

可能回答问题的人

  • HKC

    红客学院 · 创始人 (已认证)

    27 粉丝7 提问5 回答
  • 西风

    renzha.net · 站长 (已认证)

    9 粉丝1 提问3 回答
  • 螃蟹居

    1 粉丝0 提问2 回答
  • 富有想象力的人

    2 粉丝0 提问1 回答

扫码关注云+社区

领取腾讯云代金券