【问题标题】:Is there a way to set Event ID on EventLog sink (in Serilog)?有没有办法在 EventLog 接收器(在 Serilog 中)上设置事件 ID?
【发布时间】:2015-04-15 12:59:22
【问题描述】:

我查看了 Github 上的 Serilog.Sinks.EventLog,发现似乎没有办法设置记录事件的 Event ID(示例 ID 为 here)。

是否有一种方法可以修改接收器以使其成为可能?也许带有某种特殊格式的消息?我不知道我应该把这个放在这里还是放在 Github 上,我会先在这里尝试。 :)

【问题讨论】:

    标签: serilog


    【解决方案1】:

    目前还没有一种机制来解决这个问题 - 设计一个似乎很棘手(但最终它会成为项目的一个很好的补充!)

    【讨论】:

    • 确实,立即想到的是一个特殊格式的消息,一个类似拦截器的接收器(一个 lambda 函数?),它进行最终调用或某种附加对象,可能还有元编程。也许一个选项是可选的 lambda,它将使用给定的接收器(例如事件日志接口)调用,以便“当场”进行调用,或者看起来像在代码中。只是我头上的东西。看起来我们项目中的冲动可以通过其他方式来满足,但它仍然是一个很棒的功能!
    • 我想知道是否可以使用消息模板 ("Foo {Bar}") 的哈希值来生成唯一(足够)的事件 ID?然后生成正确的清单文件是首要考虑因素......但是我对事件日志的这方面不是很熟悉。
    • 在某些情况下它会起作用,但不是全部。有很多监控工具可以读取事件日志,并且可以定义指定 ID 发生或不发生的规则。如果可以使用不同的 ID,这将是可行的,但如果有人想要预定义具有某种含义的 ID 范围,则不容易。目前 Serilog EL 接收器使用严重级别作为 ID。我们可以这样做并将事件 ID 放入消息本身并在消息字符串上执行“正则表达式”。这并不理想,但很有效,因为我们对致命和错误级别感兴趣。
    • Microsoft.Extensions.Logging 有一个带有 ID 和名称的 EventId。由日志代码(而不是提供者/接收器)来定义事件 ID。这可能是一个约定。它甚至可能与Microsoft.Extensions.LoggingEventId 相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    相关资源
    最近更新 更多