如何在log4j 2.2中使用LoggingEvent类

时间:2015-04-09 14:59:23

标签: java logging log4j log4j2

我想从Log4j 1.x迁移到Log4j 2.x.所以我尝试使用log4j-1.2-api.jar提到here。我的应用程序有一个org.apache.log4j.spi.LoggingEvent的实现,但我找不到一种方法来使用LoggingEvent和log4j 2.x api桥。无论如何我可以使用LoggingEvent和log4j 2.2吗?

感谢。

2 个答案:

答案 0 :(得分:2)

在内部,log4j使用LogEvent将所有数据(日志消息,线程名称,时间戳,标记,记录器名称等)携带到它们可能出现在输出中的appender中。

Log4j日志事件仅供内部使用,不适合应用程序扩展。例如,Async Loggers使用LogEvent接口的专用实现来满足底层LMAX Disruptor库的要求。扩展这个并不容易。

您的用例对我来说并不清楚,但是如果您想开发一个需要LogEvent界面中不存在的自定义数据的自定义appender,您可以考虑使用ThreadContext地图将数据从您的应用传递到自定义appender,而不是尝试使用自定义日志事件。

答案 1 :(得分:0)

在升级 Log4j 时,我只是使用了 LogEvent 而不是 LoggingEvent

我已经删除了 AppenderSkeleton 并用 AbstractAppender 替换了它。 AppenderSkeletonappend(LoggingEvent event) 方法在 AbstractAppender 中显示为 append(LogEvent event),这是我使用 LogEvent 而不是 LoggingEvent 的提示。