【问题标题】:How to format the Timestamp data when using TraceOptions.Timestamp使用 TraceOptions.Timestamp 时如何格式化时间戳数据
【发布时间】:2011-12-03 03:15:38
【问题描述】:

如何格式化设置 TraceOutputOptions = TraceOptions.Timestamp 时打印的 Timestamp 数据?

我得到类似的东西: Timestamp=41329240725(写入输出文本文件的实际值)

编辑: 我想要像 10:22:34.32938 这样的东西。我应该如何配置 TextWriterTraceListener 来实现这一点?

【问题讨论】:

  • 但是你想怎么格式化呢? Timestamp 确实是一个long 值,其实际含义取决于时间源(高性能计数器或系统定时器)以及如果使用高性能计数器的频率。

标签: c# trace tracesource


【解决方案1】:

根据这个页面

http://msdn.microsoft.com/en-us/library/a10k7w6c.aspx

TraceOptions Timestamp 返回滴答数,因此要将滴答转换为时间需要做:

DateTime date = new DateTime(41329240725);
string FormattedDate =  date.ToShortDateString();

但是 41329240725 对于蜱虫来说似乎有点小(我希望这只是一个例子)

【讨论】:

  • 实际上是一个真实的例子。该数字被写入字符串之后的输出文本文件(插入到 TraceEvent 中)。我想要像 10:22:34.32938 这样的东西。我应该如何配置 TextWriterTraceListener 来实现这一点?
【解决方案2】:

您真的要记录消息的写入时间吗?如果是这样,您想使用TraceOptions.DateTime。注意,根据MSDN,时间写成UTC。

如果您想更好地控制时间的格式(包括如果您希望它以 UTC 以外的其他方式表示),那么您可能已经编写了自己的自定义 TraceListener,或者找到一个可以做您想做的事情.

System.Diagnostics 的一个有用插件是Ukadc.Diagnostics。有了它,您可以轻松地为您的日志消息添加自定义格式(类似于您可以使用 log4net 和 NLog 执行的操作)。

以下是我过去提供的一些其他答案链接,用于记录您可能会发现有用的问题:

When should I use Tracing vs Logger.NET, Enterprise Library, log4net or Ukadc.Diagnostics?

When do I need more than one TraceSource in code?

【讨论】:

  • 是的,我想要。现在我得到了这个:DateTime=2011-10-07T17:38:33.9825856Z。没关系。你更喜欢 Ukadc.Diagnostics 而不是 log4net 吗?我尝试在没有任何其他第 3 部分库的情况下先进行跟踪。
  • 现在我个人的偏好,如果使用 3rd 方库没有问题,那就是 NLog。最近发布了一个新的更新。 NLog 和 log4net 在功能上非常接近。使用任何一种都不会出错。另一种选择是使用 Common.Logging (netcommon.sourceforge.net) 日志抽象。这样您就不会被绑定到特定的日志库。请注意,Common.Logging 尚未发布使用 NLog 最新版本的新版本。使用 Common.Logging,您可以...
  • 也很容易基于 System.Diagnostics 编写自己的日志抽象。我已经对 Ukadc.Diagnostics 进行了试验,发现如果您使用 System.Diagnostics 作为您的日志记录系统,它是一个非常好的库(并且它使使用 System.Diagnostics 成为一个合理的选择)。
猜你喜欢
  • 1970-01-01
  • 2019-02-17
  • 2015-11-28
  • 2011-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多