4

.net Framework 4 を使用して C# で Windows イベント ログにアプリケーション ログを記録しようとしていますが、ログ エントリを挿入すると、TimeCreated フィールド (イベント ビューアー -> Windows ログ -> アプリケーション -> -> 詳細 -> フレンドリー ビュー) -> System) のような値を取得します

[SystemTime] 2012-03-28T11:07:12.000000000Z 

ご覧のとおり、1 秒未満の精度は失われていますが、ビューアーで "." の後に数字がある別のイベントを確認できます。より正確なタイムスタンプを示します。

これは .Net Framework/CLR/C# の何らかの制限ですか、それとも間違ったことをしているだけですか?

ありがとう。

VS2010SP1、Win7/Server 2008 R2環境。

アップデート:

私が試したことに言及することができます

EventLog.WriteEntry("applicationName", "message", logEntryType, (int)eventId, (short)taskCategory);

これまでのところ、log4netのEventLogAppender。

更新 2:

そのため、ETW を使用してイベント ログにイベントを挿入すると、実際には SystemTime の分解能が 1 秒未満のイベントが生成されます。これが実際に必要なのかもしれませんが、私の場合はやり過ぎのように感じます。

4

2 に答える 2

1

(残念ながら) 信頼できるものは何も見つかりませんが、advapi32.dll の ReportEvent 関数は秒まで追跡するだけのようです。この関数を使用して私が見た例では、タイムスタンプはあなたが示したように、ちょうど秒です。

WriteEntry メソッドは、ADVAPI32.dll ReportEvent 関数を使用してイベント ログに書き込みます。この関数には日付/時刻の値が渡されないため、精度を追跡しない内部的なものであると想定する必要があります。

于 2012-07-11T20:44:31.603 に答える