如何将 LoggingEvent 类与 log4j 2.2 一起使用

2022-09-04 23:02:39

我想从 Log4j 1.x 迁移到 Log4j 2.x。所以我试图使用这里提到的。我的应用程序具有 的实现,但我找不到将 LoggingEvent 与 log4j 2.x api 桥接一起使用的方法。无论如何,我可以将LogingEvent与log4j 2.2一起使用吗?log4j-1.2-api.jarorg.apache.log4j.spi.LoggingEvent

谢谢。


答案 1

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

我删除了 AppenderSkeleton,并用 AbstractAppender 取而代之。的方法出现在 中,这是我用来代替 的提示。AppenderSkeletonappend(LoggingEvent event)AbstractAppenderappend(LogEvent event)LogEventLoggingEvent


答案 2

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

Log4j 日志事件仅供内部使用而设计,不设计为由应用程序扩展。例如,异步记录器使用 LogEvent 接口的专用实现来满足底层 LMAX Disruptor 库的要求。扩展这一点并不容易。

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


推荐