gpt4 book ai didi

linux - EventSource 登录单声道

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:49:55 28 4
gpt4 key购买 nike

我正在使用 EventSource 在我的库中记录事件。该库是跨平台的,这意味着它可以被 linux/mac 用户使用。我知道 EventSource 在 Windows 上是如何工作的。用户可以使用 PerfView 或 Logman 工具等工具查看默认日志,或实现 EventListener 类以将日志定向到不同的位置。

但是 EventListener 类在单声道上不可用。 linux/mac默认EventSource记录的事件在哪里?有什么工具可以查看它们吗?

如果需要更多详细信息,请告诉我。

最佳答案

只需查看 EventLog 的源代码 here .在那里你会看到 mono 上有 3 个事件日志实现:

  1. Windows 事件日志(显然只适用于 Windows)
  2. Local file even log(记录到本地文件)
  3. 空事件日志 - 只删除您记录的所有内容。

它如何选择一个?它查看环境变量 MONO_EVENTLOG_TYPE。如果它不存在,并且您不在 Windows 上 - 选择 null even log(这应该回答您的问题,默认情况下您的日志将去哪里)。

如果变量存在且等于“local” - 它将记录到本地文件。如果您想知道它将把这些文件放在哪里,请查看here。 .您将在 Linux 上看到此类日志的默认路径是“/var/lib/mono/eventlog”。

总而言之——如果您开发跨平台库,请考虑使用除纯 EventLog 之外的其他东西(一些库,如 log4net 已经很好,并且可配置,也可以记录到 EventLog,以及其他选项)。如评论中所述 - 您确实可以使用 SetEnvironmentVariable 为当前进程设置该环境变量,但其他问题仍然有效。

编辑:抱歉,我有点困惑,回答了另一个问题 :) 现在我明白你说的是 ETW。所以 ETW 是 Windows 的事件跟踪,我怀疑它是在单声道中实现的。事实上,您看到自己在评论中提供了一个链接,即 EventSource 类只是一个什么都不做的 stub 。 Mono 有很多这样的 stub ,因此您的 .NET 代码可以编译和运行,即使某些功能没有实现。所以你的问题的答案是 - 单声道不支持 ETW。您可以通过检查在哪个平台上运行 EventSource 实现来解决这个问题,如果您在单声道上运行 - 不要使用 WriteEvent 而是登录到另一个地方(例如 log4net 文件)。

关于linux - EventSource 登录单声道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32709287/

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