Это мой первый пост на 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.