Как мне написать в пользовательский журнал событий Windows?
Я пытаюсь настроить базовую запись в журнал событий Windows в .net черезSystem.Diagnostics.EventLog
, но я не вижу каких-либо событий, записываемых в журнал. Рассмотрим следующий код:
// 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
в моем app.config, и он ничего не писал, так что это часть устранения этой проблемы.)