Как мне записать в настраиваемый журнал событий Windows?

Я пытаюсь настроить базовое ведение журнала для журнала событий Windows в .net через _ 1_, но я не вижу, чтобы какие-либо события действительно записывались в журнал. Рассмотрим следующий код:

// Elsewhere in the class
private static readonly string EventLogName = "LogName";
private static readonly string EventLogSource = "AppName";

// In the only function that does something
if (!EventLog.Exists(EventLogName))
{
    EventLog.CreateEventSource(EventLogSource, EventLogName);
    return;
}
else
{
    Trace.TraceInformation("Attempting log");

    // This doesn't write anything
    EventLog.WriteEntry(EventLogSource, 
        "StaticWriteEntry", 
        EventLogEntryType.Error);

    // Neither does this
    using (var log = new EventLog())
    {
        log.Log = EventLogName;
        log.Source = EventLogSource;
        log.WriteEntry("WriteEntry?", EventLogEntryType.Error);
    }
}
return;

В первый раз я создаю журнал и выхожу из приложения в соответствии с образцом MSDN. Конечно, это создание журнала в конечном итоге войдет в настройку. Последующие запуски пытаются записать сообщение в созданный журнал событий.

Никаких исключений не выбрасывается. Кажется, что журнал успешно создан (я могу открыть его в средстве просмотра событий Windows). В журнал безопасности не регистрируется ничего важного.

Никакие сообщения не регистрируются ни через WriteEntry(). Они также не помещаются в журнал приложений из-за несоответствия имени. В этом конкретном случае я работаю на Server2008 под учетной записью администратора с отключенным UAC. (Это небольшая часть более крупного устаревшего продукта, который требует неблагоприятной среды.) Что я делаю не так?

(Я делаю это, потому что хочу использовать EventLogTraceListener < / a> в моем app.config, и он ничего не писал, так что это часть устранения этой проблемы.)


person Greg D    schedule 29.04.2009    source источник


Ответы (1)


Проблема, похоже, связана с названием источника. В частности, если я изменю имя источника, я смогу успешно писать. Это связано со следующей строкой внизу _ 1_ документы:

Если источник уже был сопоставлен с журналом, и вы переназначаете его на новый журнал, необходимо перезагрузить компьютер, чтобы изменения вступили в силу.

В ходе разработки имя журнала и источник журнала были созданы и уничтожены пару раз, и я мог изменить имя журнала без изменения имени источника.

Предположим, что моим исходным источником и журналом были "OldSource" и "OldLog". Я определил, что это может быть источником проблемы, изменив код, чтобы попытаться записать в "NewSource" и "NewLog". Когда я изменил оба, я успешно создал и написал в "NewLog". Однако когда я попытался написать в "NewLog", создав его с помощью "OldSource", это не удалось.

Я подтвердил, что это была проблема, перезагрузив мою систему разработки и запустив тот же самый код (с "NewLog" и "OldSource"), и это сработало.

Думаю, это один раз, когда перезагрузка действительно все исправила! :)

person Greg D    schedule 30.04.2009
comment
Спасибо, это также устранило мою проблему, когда я что-то зарегистрировал, изменил источник, удалил старый источник, а затем увидел, что в мой новый источник ничего не было записано. - person Sarah Vessels; 14.09.2009
comment
Замечательно, рад, что помог! :) Мне неловко, сколько времени мне потребовалось, чтобы заметить эту строчку в документации. :) - person Greg D; 14.09.2009