我想从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吗?
感谢。
答案 0 :(得分:2)
在内部,log4j使用LogEvent将所有数据(日志消息,线程名称,时间戳,标记,记录器名称等)携带到它们可能出现在输出中的appender中。
Log4j日志事件仅供内部使用,不适合应用程序扩展。例如,Async Loggers使用LogEvent接口的专用实现来满足底层LMAX Disruptor库的要求。扩展这个并不容易。
您的用例对我来说并不清楚,但是如果您想开发一个需要LogEvent界面中不存在的自定义数据的自定义appender,您可以考虑使用ThreadContext地图将数据从您的应用传递到自定义appender,而不是尝试使用自定义日志事件。
答案 1 :(得分:0)
在升级 Log4j 时,我只是使用了 LogEvent 而不是 LoggingEvent。
我已经删除了 AppenderSkeleton 并用 AbstractAppender 替换了它。 AppenderSkeleton
的 append(LoggingEvent event)
方法在 AbstractAppender
中显示为 append(LogEvent event)
,这是我使用 LogEvent
而不是 LoggingEvent
的提示。