旧的log4j 1.x不再受支持,但一个名为reload4j的分支解决了它的主要安全问题,它正在发布,因此旧的应用程序可以在不重建的情况下工作。因此,我用reload4j替换了log4j 1.x,用于旧的java应用程序。应用程序可以工作,但是我得到了错误,因为类NTEventLogAppender被删除了,事件不能写入系统事件日志。是否有一个appender可以用来代替NTEventLogAppender?
pengsaosao1#
是的,有一个appender可以用来代替NTEventLogAppender。您可以使用EventLogAppender,它在较新版本的log4j中可用,包括reload4j fork。EventLogAppender将日志事件写入Windows事件日志。您可以将其配置为写入特定的事件日志并指定事件的源。下面是一个示例配置:
<appender name="EVENTLOG" class="org.apache.log4j.EventLogAppender"> <param name="Application" value="MyApplication" /> <param name="Server" value="localhost" /> <param name="Log" value="Application" /> <param name="SourceType" value="MyApplication" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n" /> </layout> </appender>
在此示例中,EventLogAppender被配置为写入本地机器上的“Application”事件日志,并使用“MyApplication”作为事件的源。您可以根据需要自定义值。将此appender添加到log4j配置中,事件将写入Windows事件日志。
1条答案
按热度按时间pengsaosao1#
是的,有一个appender可以用来代替NTEventLogAppender。您可以使用EventLogAppender,它在较新版本的log4j中可用,包括reload4j fork。
EventLogAppender将日志事件写入Windows事件日志。您可以将其配置为写入特定的事件日志并指定事件的源。下面是一个示例配置:
在此示例中,EventLogAppender被配置为写入本地机器上的“Application”事件日志,并使用“MyApplication”作为事件的源。您可以根据需要自定义值。
将此appender添加到log4j配置中,事件将写入Windows事件日志。