log4j记录不同的日志_使用log4j2记录公共日志

I am using log4j 1.2 with commons-logging. Now I am trying to upgrade it to log4j2.

But how to use log4j2 with commons-logging to initialize log4j2.

I tried to initialize commons logging in the below way. Its working fine

**Statement1**: static Log log = new Log4JLogger(Logger.getLogger(Example.class));

**Statement2**:log.debug("debug statement");

Here I am using object of type org.apache.commons.logging.Log initialized with object of org.apache.log4j.Logger.(org.apache.log4j.Logger is the class from log4j 1.2 where as from log4j2 is changed to org.apache.logging.log4j.Logger)

Now after I upgrade to log4j2, Statement1 will not work as Log4JLogger() constructor expects argument of type org.apache.log4j.Logger type.

So, how do I use commons logging with Log4j2?

解决方案

You need to add the log4j-jcl-2.7 dependency to your classpath.

In your code, use

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

public class MyClass {

private Log log = LogFactory.getLog(MyClass.class);

...

You should not explicitly use Log4JLogger.

Also, be aware that Log4j2 is different from Log4j 1 in that it offers a clean separation between its API and its implementation. So the benefits of using a wrapper library are much less now than they were 10 years ago with Log4j 1.

Consider using the Log4j2 API directly: it gives you the same separation between API and implementation and is more feature rich than commons logging or slf4j.

Note that there is little risk in using the Log4j2 API directly: the log4j-to-slf4j-2.x module is always there in case you change your mind and decide to use Logback (or another slf4j implementation) with an application that directly uses the Log4j2 API.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值