0

LogWriter.Write()Enterprise Libraryのログブロックを使用すると、への呼び出しが数ミリエスコンド(測定値)で区切られていることがわかっているにもかかわらず、同じタイムスタンプで複数のログメッセージが出力されているのがわかりSystem.Diagnostics.Stopwatchます。

これを引き起こしている可能性があるものについての提案はありますか?

4

2 に答える 2

1

ログに精度が必要な場合は、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);

つまり、params でオーバーロードされた write を呼び出すのではなく、logentry をビルドして Write を呼び出します。

于 2012-12-16T10:04:12.077 に答える
1

これはおそらく、Enterprise Library が現在の時刻を取得するために使用するメソッド (おそらく System.DateTime.Now) の精度が限られているためです。より高い精度が必要な場合は、ログに別のライブラリを使用することを検討する必要がある場合があります。

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

于 2012-12-11T19:34:01.143 に答える