Назад | Перейти на главную страницу

Пользовательские идентификаторы событий с использованием NTEventLogAppender

Это мой первый пост на ServerFault, но мне нравится StackOverflow. Я программист, и поэтому мне удобнее работать в среде IDE, чем в реестре, поэтому я пришел сюда за помощью.

Проблема: у меня есть цепочка регистраторов

CustomLogger (добавляет сообщение журнала с настраиваемым EventId, которое анализируется обратно в NTEventLogAppender) -> slf4j -> log4j -> NTEventLogAppender

Журнал в конечном итоге используется NTEventLogAppender, который я модифицировал для анализа добавленного EventID исходного сообщения из CustomLogger, и он отлично работает. Однако, когда сообщение создается с настраиваемым EventID, в нем говорится:

Описание для идентификатора события (blah) в источнике (Диагностика сервера причала заказа станции) не найдено. На локальном компьютере может не быть необходимой информации реестра или файлов DLL сообщений для отображения сообщений с удаленного компьютера. Вы можете использовать флаг / AUXSOURCE = для получения этого описания; подробности см. в центре справки и поддержки. Следующая информация является частью мероприятия: 111219 [главная] INFO

Мне нужно избавиться от этого стандартного сообщения в начале всех моих настраиваемых сообщений журнала.

Я отредактировал файл EventLogCategories.mc, чтобы отразить все новые коды, например:

; example of new logging code
MessageId=0x45
Language=English
No logging code was given, using default logging code %1
.

и я запускаю файл build.bat, который создает файл NTEventLogAppender.dll, который я затем помещаю в соответствующий каталог и запускаю для него regsvr32.

Я также посмотрел этот FAQ от Apache, http://logging.apache.org/log4j/1.2/faq.html#a2.10и скопировал NTEventLogAppender.dll в каталог% SYSTEMROOT% \ SYSTEM32 безрезультатно.

Кроме того, я видел это, https://issues.apache.org/bugzilla/show_bug.cgi?id=37866, а затем добавил Microsoft Message Compiler (mc.exe) и MinGW в системную переменную среды Path, перекомпилировал, скопировал и зарегистрировал ... все безрезультатно.

Наконец, я попытался опубликовать сообщение на форуме Apache Logging-log4j-user (ссылка отредактирована, потому что я новый пользователь, и более двух ссылок в сообщении запрещено), но адрес log4j-user@logging.apache.org просто отскочил ко мне.

У кого-нибудь есть идеи, где еще я мог ошибиться?

Решение. Удалите ключи в реестре для NTEventLogAppender проекта, затем запустите build.bat из интерфейса командной строки VS2010 и скопируйте NTEventLogAppender в соответствующее место в папке проекта.

Не нужно задействовать mc.exe или rc.exe, не нужно копировать в каталог \ System32.