为什么EntLib日志记录会在同一时间戳发出多条消息?

时间:2012-12-04 21:40:07

标签: logging time enterprise-library

使用Enterprise Library中的日志记录块,我看到使用相同的时间戳发出了多个日志消息,尽管知道对LogWriter.Write()的调用间隔了几毫秒(测量为System.Diagnostics.Stopwatch

有关可能导致此问题的任何建议吗?

2 个答案:

答案 0 :(得分:1)

这可能是由于Enterprise Library用于获取当前时间的方法的精度有限,可能是System.DateTime.Now。如果需要更高的精度,可能需要使用不同的库进行记录。

http://msdn.microsoft.com/en-us/library/system.datetime.now.aspx

答案 1 :(得分:1)

如果您需要在日志中具有精确度 使用 System.Diagnostics.Stopwatch 获取精确的时间.. 请参阅此处的示例http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.gettimestamp.aspx 分辨率基于您的硬件。可以和nanosecs一样好。

手工构建logentry,

//Microsoft.Practices.EnterpriseLibrary.Logging
var logEntry = new LogEntry() ;
/// code re stop watch add here...
FancyTime = StartTime + Elapsedticks // see StopWatch.getTimeStamp
logEntry.TimeStamp = FancyTimeFromStopWatchClass;

LogWriterImpl.Write(logEntry);

换句话说,构建logentry并调用Write,而不是用params调用重载写。