[C#] イベントログをラムダ式で検索
イベントログを抽出したい場合、foreach ですべて列挙すると時間がかかってしまう。
これをラムダ式で検索したい場合は、以下のように行う。
EventLogEntry.TimeGenerated プロパティ - msdn
http://msdn.microsoft.com/ja-jp/library/system.diagnostics.eventlogentry.timegenerated%28v=vs.110%29.aspx
これをラムダ式で検索したい場合は、以下のように行う。
// 一週間のうち、ソースが SecurityCenter であるイベントログを取得。 // 戻り値は IEnumerable となる。 var period = DateTime.Now.AddDays(-7); var logName = "Application"; var machineName = "."; if (EventLog.Exists(logName, machineName)) { var log = new EventLog(logName, machineName); var ret = log.Entries.Castなお、TimeGenerated には少々癖があり、必ずしもイベントログに書込まれた時間ではないらしい。().Where(m => m.TimeGenerated >= period && m.Source == "SecurityCenter"); log.Close(); }
EventLogEntry.TimeGenerated プロパティ - msdn
http://msdn.microsoft.com/ja-jp/library/system.diagnostics.eventlogentry.timegenerated%28v=vs.110%29.aspx