Log4j2分析与实践-常用组件

Commons Logging Bridge

    Commons Logging Bridge使得使用Commons Logging API的应用可以使用Log4j2的实现。
    它的使用很简单,只需要将bridge的jar包、其它Log4j2的jar包和Commons Logging的jar包都放到classpath下,那么所有使用Commons Logging API的日志请求会被路由到Log4j2.

Log4j 1.2 Bridge

    Log4j 1.2 Bridge使得使用Log4j 1.2 API的应用可以使用Log4j2。
    要使用Log4j 1.2 Bridge的话,只需要移除所有Log4j 1.x的jar包,然后加入bridge的jar包。配置好之后,所有使用Log4j 1.x API的日志请求都会路由到Log4j 2。然而,如果应用会尝试修改旧版的Log4j,比如添加Appender和Filter等,就可能会遭遇失败,因为有些方法可能已经不存在了。

Log4j 2 SLF4J绑定

    Log4j 2 SLF4J绑定使得使用SLF4J API的应用可以使用Log4j2的实现。
    SLF4J绑定会将所有的SLF4J API路由到Log4j2。仅需要将SLF4J绑定的jar包、Log4j2的jar包和SLF4J API的jar包添加到classpath下就可以了。

Log4j to SLF4J适配器

    Log4j to SLF4J适配器与Log4j 2 SLF4J绑定是不同的,Log4j 2 SLF4J绑定是将调用SLF4J API的日志请求路由到Log4j2的实现上,而Log4j to SLF4J适配器是将调用Log4j2 API的日志请求路由到SLF4J。使用这种适配器是有性能损失的,因为Log4j2的消息必须要格式化之后才能传递给SLF4J。

    需要将Log4j to SLF4J Adapter的jar包、Log4j2 API的jar包和SLF4J API的jar包放到classpath下。

    注意:不要同时使用Log4j2 SLF4J绑定(log4j-slf4j-impl-2.0.jar)和SLF4J适配器(log4j-to-slf4j-2.0.jar),因为它会导致事件无止尽地在SLF4J和Log4j2之间路由。