使用 Enterprise Library 中的日志记录块,我看到多个日志消息以相同的时间戳发出,尽管知道调用LogWriter.Write()
间隔为几毫秒(如测量值System.Diagnostics.Stopwatch
)。
关于可能导致这种情况的任何建议?
使用 Enterprise Library 中的日志记录块,我看到多个日志消息以相同的时间戳发出,尽管知道调用LogWriter.Write()
间隔为几毫秒(如测量值System.Diagnostics.Stopwatch
)。
关于可能导致这种情况的任何建议?
这可能是由于企业库用于获取当前时间的方法的精度有限,可能是 System.DateTime.Now。如果您需要更高的精度,您可能需要考虑使用不同的库进行日志记录。
http://msdn.microsoft.com/en-us/library/system.datetime.now.aspx
如果您需要精确的日志使用System.Diagnostics.Stopwatch来获得精确的时间。请参阅此处的示例http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.gettimestamp。 aspx 分辨率取决于您的硬件。可以和纳秒一样好。
手动构建日志条目,
//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);
换句话说,构建日志条目并调用 Write,而不是使用参数调用重载 write。