アプリケーションのイベントログを読み込もうとしていますEventLoggingApp。問題は、私の単一のソース(EventLoggingApp)のログを読み取ることです。
このコードは、すべてのソースのログを読み取ります。何が問題ですか?何かアドバイス?
static void ReadEvenLog()
{
string eventLogName = "Application";
string sourceName = "EventLoggingApp";
string machineName = "Tom";
EventLog eventLog = new EventLog();
eventLog.Log = eventLogName;
eventLog.Source = sourceName;
eventLog.MachineName = machineName;
foreach (EventLogEntry log in eventLog.Entries)
{
Console.WriteLine("{0}\n",log.Source);
}
}
これを試して:
EventLog log = new EventLog("Security");
var entries = log.Entries.Cast<EventLogEntry>()
.Where(x => x.InstanceId == 4624)
.Select(x => new
{
x.MachineName,
x.Site,
x.Source,
x.Message
}).ToList();
MSDNで article を確認してください。ソースごとにイベントログエントリを読み取ることはできません。重要なのはログ名だけです。代わりに、アプリケーションごとに個別のイベントログを作成したり、foreachループの各エントリのSourceプロパティを確認してエントリをフィルタリングしたりできます。
コンソールで何を印刷しようとしていたのか本当にわかりません。それが メッセージ 印刷しようとしている各イベントログエントリのforeach
ループ内では、代わりに次のようにする必要があります。
Console.WriteLine(log.Message + "\n");