log4j reload4j的Java程序:如何将事件写入系统事件日志?

xxls0lw8  于 2023-05-06  发布在  Java
关注(0)|答案(1)|浏览(121)

旧的log4j 1.x不再受支持,但一个名为reload4j的分支解决了它的主要安全问题,它正在发布,因此旧的应用程序可以在不重建的情况下工作。
因此,我用reload4j替换了log4j 1.x,用于旧的java应用程序。应用程序可以工作,但是我得到了错误,因为类NTEventLogAppender被删除了,事件不能写入系统事件日志。
是否有一个appender可以用来代替NTEventLogAppender?

pengsaosao

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事件日志。

相关问题