为了账号安全,请及时绑定邮箱和手机立即绑定

如何强制对枚举进行 Serilog 标记

如何强制对枚举进行 Serilog 标记

C#
Cats萌萌 2021-07-01 10:01:55
我正在使用 Serilog 将我们的 log4net 记录器替换为结构化日志记录。我想使用 Enum 在代码中强制执行标记,但我在如何执行时遇到了一些困难。现在我的日志看起来像这样:logger.ErrorFormat("Proxy Logic for the Item {Item} failed. Swallow exception", Item); 当ErrorFormat签名是void ErrorFormat(string format, params object[] args);但我不知道如何替换Item为类似LogTags.TagA. 当 TagA 是一个 Enum 时,它会给我一种方法来为我的标记强制执行统一的标准。所以它看起来像:public enum LogTags{TagA,...}public class Foo{     public void DoError()     {     logger.ErrorFormat("Proxy Logic for the Item {@LogTags.TagA} failed. Swallow exception", Item);     }}     实现这一目标的最佳实践是什么?
查看完整描述

1 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

Serilog 中的属性名称需要是简单的非点标识符,因此像这样的名称Enum.LogTags.Item不能直接使用。


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


logger.ErrorFormat(

  "Proxy Logic for the Item {@Enum} failed. Swallow exception",

  new { LogTags = new { Item }});


查看完整回答
反对 回复 2021-07-10
  • 1 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信