2010-06-30 4 views
13

Я пытаюсь просмотреть журналы событий для своего приложения EventLoggingApp. Проблема заключается в чтении журналов для моего единственного источника (EventLoggingApp).Прочитать журнал событий в C#

Этот код читает журналы для каждого источника. В чем проблема? Любой совет?

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); 
    } 
} 

ответ

-2

Если вы подключаетесь к localhost, установите MachineName на "." Проверьте, имеет ли пользователь право на чтение из журнала событий

+1

Поскольку он получает все журналы с его машины нет проблем с безопасностью. – atamanroman

4

Проверьте это article на MSDN. Вы не можете читать записи журнала событий по источнику. Важно только имя журнала. Вместо этого вы можете создать отдельный журнал событий для приложений или фильтров, проверив свойство Source каждой записи в цикле foreach.

+2

Thx, я из Словакии, ваш eng намного лучше, чем мой :) – Tom159

1

MSDN (1)(2) говорит, что источник предназначен для записи журналов событий.

Нет необходимости указывать источник при чтении только из журнала. Вы можете указать только имя журнала и имя MachineName (имя сервера компьютера) для экземпляра EventLog. В любом случае элемент «Записи» автоматически заполняется списком записей журнала событий. Вы можете выбрать соответствующий индекс для элемента в этом списке, чтобы читать отдельные записи. (1)

0

Я не совсем уверен, что вы пытались напечатать на консоли. Если это сообщение в каждой записи журнала событий, который вы пытаетесь напечатать, внутри цикла foreach вы должны иметь это вместо:

Console.WriteLine(log.Message + "\n"); 
11

Попробуйте это:

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(); 
Смежные вопросы