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