gpt4 book ai didi

.net - 依赖问题在大型应用程序中实现用于语义日志记录的 EventSource

转载 作者:行者123 更新时间:2023-12-04 12:58:15 25 4
gpt4 key购买 nike

我正在开发一个由三个 Windows 服务和几个普通 Windows 应用程序 (.exe) 组成的大型产品。现在我们要转移到 ETW 和语义日志记录,并使用 Microsoft.Diagnostics.Tracing.EventSource。

我在某处读到应用程序的所有逻辑连接部分都应该使用相同的事件源。这意味着我们最好为我们的服务拥有几乎单一的 EventSource。但是我们如何在不引入产品中几乎所有程序集之间的依赖关系的情况下做到这一点?

该应用程序目前包含大约 70 个程序集。并且为了能够在 EventSource 中创建一个日志方法,例如接受一个枚举值,包含事件源的程序集必须引用定义枚举的程序集,这意味着枚举定义需要从使用它的程序集,可能是 .exe,用于所有程序集引用的内容。

有没有办法在一个应用程序中从 EventSource 派生多个类,这些类仍然使用相同的 ETW EventSource?或者在这种情况下,当不希望引入一大堆新的依赖项来创建日志类时,使用 ETW 实现语义日志记录的好方法是什么?

最佳答案

共有三种策略:

  • 创建一个仅包含为所有应用程序定义事件的 EventSource 派生类的程序集。将对该程序集的引用添加到所有必需的项目中。为简单起见,您可以将其包装到 nuget 包中。
  • 创建一个只有一个 EventSource 派生类的测试项目。仅将其用于验证目的。将此类复制到所有必需的项目。这基本上是相同的解决方案,但没有二进制依赖项。
  • 为每个项目创建新的 EventSource 派生类,但为它们指定相同的 Guid 属性。在这种情况下,您需要确保所有这些事件源对重叠(具有相同 ID)事件具有相同的声明。在这种情况下,您必须编写一些 list 合并工具来生成组合 list 。
  • 关于.net - 依赖问题在大型应用程序中实现用于语义日志记录的 EventSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26328503/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com