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

时间:2016-01-15 09:41:56

标签: c# datetime system.diagnostics

我在app.config中定义了一些监听器+使用DateTime添加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>

1 个答案:

答案 0 :(得分:2)

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