Log4j 总结

log4j的使用

结合项目使用Log4j打印日志,log4j具体的使用方法大家可以baidu下,本文只是总结一下log4j和项目的关系。

首先创建一个maven项目,在POM文件中导入log4j依赖:

 <dependencies>
     <dependency>
         <groupId>log4j</groupId>
         <artifactId>log4j</artifactId>
         <version>1.2.17</version>
     </dependency>
 </dependencies>

项目结构如下:


这里写图片描述

定义3个类 Test1,Test2,Test3

package appender1;
import org.apache.log4j.Logger;

public class Test1 {
public static Logger LOG = Logger.getLogger(Test1.class);
    public static void main(String[] args) {
        LOG.info("this info is from class Test1");
        LOG.info("this info is from class Test1");
        LOG.info("this info is from class Test1");
        LOG.info("this info is from class Test1");
    }
}
package appender1;
import org.apache.log4j.Logger;

public class Test2 {
public static Logger LOG = Logger.getLogger(Test2.class);
    public static void main(String[] args) {
        LOG.info("this info is from class Test2");
        LOG.info("this info is from class Test2");
        LOG.info("this info is from class Test2");
        LOG.info("this info is from class Test2");
    }
}
package appender2;
import org.apache.log4j.Logger;

public class Test3 {
public static Logger LOG = Logger.getLogger(Test3.class);
    public static void main(String[] args) {
        LOG.info("this info is from class Test3");
        LOG.info("this info is from class Test3");
        LOG.info("this info is from class Test3");
        LOG.info("this info is from class Test3");
    }
}

注意这里类Test1完整类名为appender1.Test1
类Test2完整类名为appender1.Test2
类Test3完整类名为appender2.Test3
Test1和Test2属于同一个包

Log4j的配置文件如下

#定义appender,这个随便查下就好啦
log4j.appender.Test = org.apache.log4j.FileAppender
log4j.appender.Test.File= ./logs/test.log
log4j.appender.Test.layout=org.apache.log4j.PatternLayout
log4j.appender.Test.layout.conversionPattern=%m%n

#这里是记录的重点,主要是配置对应的Logger,对于我们之前的项目,
#Test1和Test2位与同一个包appender1中,下面这个配置的意思就是将
#包appender1中定义的Logger对应上配置文件中名为Test的appender。

log4j.logger.appender1=INFO,Test

接着分别运行Test1,Test2,Test3 我们可以发现,Test1,Test2正常将日志输出到./logs/test.log文件中。而Test3将会报错:

log4j:WARN No appenders could be found for logger (appender2.Test3).
log4j:WARN Please initialize the log4j system properly.

因为Test3中的Logger找不到与之对应的appender。

配置log4j.logger.appender2= INFO,Test 即可

补充一点:

log4j.rootLogger = INFO, ROOT
log4j.appender.ROOT = org.apache.log4j.FileAppender
log4j.appender.ROOT.File= ./logs/test.log
log4j.appender.ROOT.layout=org.apache.log4j.PatternLayout
log4j.appender.ROOT.layout.conversionPattern=%m%n

log4j有一个叫做rootLogger的默认Logger,剩下的logger都是这个rootLogger的子logger,也就是说所有日志都会写到rootLogger中,如果将上述配置加入到log4j.properties文件中,当我们再次运行Test1时,会发现test.log 中将会记录8条日志,这是因为rootLogger和Test这两个Logger分别向日志文件中写了一次。

那么就会想到这样岂不是日志就有重复了么?没关系,对于每个我们自己定义的logger可以配置如下属性,这样就不会写入到rootLogger中了,其中appender1是我们的包名

log4j.additivity.appender1=false
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值