如何在 log4j 2.2 中使用 LoggingEvent class

How to use LoggingEvent class with log4j 2.2

我想从 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 一起使用吗?

谢谢。

在内部,log4j 使用 LogEvent 将所有数据片段(日志消息、线程名称、时间戳、标记、记录器名称等)传送到它们可能出现在输出中的附加程序。

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

我不清楚你的用例,但如果你想开发一个自定义附加程序,它需要自定义数据,而自定义数据不存在于 LogEvent 接口中,你可以考虑使用 ThreadContext 映射将数据从你的应用程序传递到自定义附加程序,而不是尝试使用自定义日志事件。

升级Log4j的时候,我干脆用了LogEvent instead of LoggingEvent.

我删除了 AppenderSkeleton and replaced it with AbstractAppenderAppenderSkeletonappend(LoggingEvent event) 方法在 AbstractAppender 中显示为 append(LogEvent event),这是我使用 LogEvent 而不是 LoggingEvent 的提示。