2011-10-07 48 views
2

如何格式化设置TraceOutputOptions = TraceOptions.Timestamp时打印的时间戳数据?如何在使用TraceOptions.Timestamp时格式化时间戳数据

即时得到类似: 时间戳= 41329240725(实际值写在输出文本文件)

编辑: 我想是10:22:34.32938。我如何配置TextWriterTraceListener来实现这一点?

+0

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

回答

2

你真的想记录消息被写入的时间恩?如果是这样,你想使用TraceOptions.DateTime。请注意,根据MSDN,时间被写为UTC。

如果您想要更多地控制时间格式(包括如果您希望以UTC以外的方式表达它),那么您可能会编写自己的自定义TraceListener,或者找到一个可以执行您的操作的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?

+0

是的,我想要。现在我得到这个:DateTime = 2011-10-07T17:38:33.9825856Z。没关系。你喜欢Ukadc.Diagnostics比log4net吗?我试图追踪没有任何其他第三部分库。 – Pedro77

+1

现在我的个人喜好,如果使用第三方库不是问题,是NLog。最近发布了一个新的更新。 NLog和log4net在功能上非常接近。使用任何一种方法都可能不会出错。另一种选择是使用Common.Logging(http://netcommon.sourceforge.net/)日志抽象。这样你就不会被绑定到特定的日志记录库。请注意,Common.Logging尚未发布使用NLog最新版本的新版本。使用Common.Logging你可以... – wageoghe

+1

也很容易编写你自己的基于System.Diagnostics的日志抽象。我已经使用Ukadc.Diagnostics进行了实验,发现它是一个非常好的库,如果你使用System.Diagnostics作为你的日志系统(并且它使得System.Diagnostics成为一个合理的选择)。 – wageoghe

0

根据这一页

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

跟踪选项时间戳返回蜱的数量,所以蜱转换成时间,你需要做的:

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

然而41329240725,似乎有点小对于蜱(我希望这只是一个例子)

+0

实际上它是一个真实的例子。该数字在字符串(即插入到TraceEvent中)后写入到输出文本文件中。我想要10:22:34.32938之类的东西。我如何配置TextWriterTraceListener来实现这一点? – Pedro77