这是我在ServerFault上的第一篇文章,但我喜欢StackOverflow。 我是一个编码人员,因此我比在registry中更舒适,所以我来这里寻求帮助。
问题:我有一个logging器链
CustomLogger(在日志消息中添加一个自定义的EventId,在NTEventLogAppender中parsing出来) – > slf4j – > log4j – > NTEventLogAppender
日志最终被NTEventLogAppender使用,我修改了它来parsingCustomLogger中原始消息的附加EventID,并且它工作正常。 但是,如果使用自定义EventID生成邮件,则会显示:
源(订购站docker服务器诊断)中的事件ID(等等)的说明找不到。 本地计算机可能没有必要的registry信息或消息DLL文件来显示来自远程计算机的消息。 您可能能够使用/ AUXSOURCE =标志来检索此说明; 详细信息请参阅帮助和支持。 以下信息是事件的一部分:111219 [main] INFO
我需要在我所有的自定义日志消息的开头摆脱这个jar头消息。
我编辑了EventLogCategories.mc文件来反映所有新代码,如下所示:
; example of new logging code MessageId=0x45 Language=English No logging code was given, using default logging code %1 .
并运行生成NTEventLogAppender.dll文件的build.bat文件,然后将其放置在相应的目录中并在其上运行regsvr32。
我也从Apache看这个FAQ, 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消息编译器(mc.exe)和MinGW添加到系统Path环境variables,重新编译,复制注册……都无济于事。
最后,我试图发布到Apache Logging-log4j用户论坛,(链接编辑,因为我是一个新用户,并在一篇文章中的两个以上的链接是禁止的),但[email protected]地址只是弹回给我。
任何人有任何想法,否则我可能会出错?
解决scheme:删除项目NTEventLogAppender的registry项,然后从VS2010命令行界面运行build.bat,并将NTEventLogAppender复制到项目文件夹中的相应位置。
无需涉及mc.exe或rc.exe,无需复制到\ System32目录。