在 System.Diagnostics.Trace 中获取 DateTime 的本地时间

本文关键字:时间 DateTime 获取 System Diagnostics Trace | 更新日期: 2023-09-27 18:30:34

我已经在我的app.config中定义了一些侦听器 + 添加带有日期时间的traceOutputOptions。它完全符合我没有额外包(log4net)/没有额外配置的需求。

但是文件中的日期时间是UTC的,这使得通常很难"快速阅读"和比较。有没有办法在本地时间强制输出而不覆盖默认跟踪系统?

<trace autoflush="true" indentsize="4">
      <listeners>
        <add name="delimitedListener" type="System.Diagnostics.DelimitedListTraceListener" delimiter=";" initializeData="output.log" traceOutputOptions="DateTime">
            <filter type="System.Diagnostics.EventTypeFilter" initializeData="Warning"/>
        </add>
        <add name="consoleListener" type="System.Diagnostics.ConsoleTraceListener"/>
        <remove name="Default" />
      </listeners>
    </trace>

在 System.Diagnostics.Trace 中获取 DateTime 的本地时间

我很确定没有办法让它使用本地时间。我想我可能很久以前就已经提交了关于这个问题的错误报告,Microsoft说他们不会修复它。如果我没记错的话,Microsoft说在本地时间打印会导致性能问题。另外,我认为这可能与信息可以记录到 ETW 的事实有关?对我来说似乎真的很愚蠢。我愿意为它带来性能影响,因为必须从 GMT 转换日期/时间是非常用户敌对的。我同意你的看法,我宁愿只使用.NET内置日志记录,而不是必须向Log4net添加依赖项。不幸的是,Microsoft似乎不在乎让它变得非常强大。对我来说,这似乎是一个非常明显的可用性问题。