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

标签 c# datetime system.diagnostics

我在 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>

最佳答案

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

关于c# - 在 System.Diagnostics.Trace 中获取 DateTime 的本地时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34808195/

相关文章:

postgresql - 当开始时间戳的小时小于结束时间戳的小时时检索查询

c# - 从 TextWriterTraceListener 获取跟踪文件名?

c# - Process.WorkingSet64 返回最大值 4294967295

c# - 流利的 Nhibernate : Can't create database connection to MySQL

c# - 将 PDF 转换为 PDF/A3 或将 PDF/A-1 转换为 PDF/A-3

c# - 截取按键删除

c# - 系统.诊断.进程(); StartInfo.Arguments 使用环境变量作为参数

c# - 如何将文本框中的每个字符串转换为字符串?

ruby-on-rails - Rails 的 now 和created_at 之间的日期差异(以天为单位)

php - 将日期时间对象增加 5 分钟并添加到数据库