log4j完全手册读后摘录1

 FileAppender a0=new FileAppender(new SimpleLayout(), "a0.log");
			FileAppender a1=new FileAppender(new SimpleLayout(), "a1.log");
			
			Logger root=Logger.getRootLogger();
			root.addAppender(a0);
			
			Logger x=Logger.getLogger("x");
			x.addAppender(a1);
			
			Logger xyz=Logger.getLogger("x.y.z");
			
			xyz.debug("xyz debug...");
			xyz.info("xyz info...");

 两个log文件都会记录日志

 DEBUG - xyz debug...INFO - xyz info...

这说明logger是有继承性的,xyz没有配置appender,就会继承祖先的配置

继承介绍
1、log4j的继承是通过命名来实现的。

比如logger.a.b就会继承logger.a的一些设置。

2、子logger会默认继承父logger的appender。

如果配置中这样写:logger.a=INFO,app_a,logger.a.b=DEBUG,app_b,那么实际上,logger.a.b的配置是这样的:logger.a.b=DEBUG,app_b,app_a。

3、子logger只在自己未定义输出级别的情况下,才会继承父logger的输出级别。

比如配置中这样写:logger.a=DEBUG,app_a,logger.a.b=,app_b,那么实际上,logger.a.b的配置是:logger.a.b=DEBUG,app_b,app_a。

但是如果配置中这样写:logger.a=DEBUG,app_a,logger.a.b=INFO,app_b,那么实际上,logger.a.b的输出级别就是INFO,而不会继承logger.a的DEBUG。这样,如果用logger.a.b记录DEBUG信息,它是不会向app_a输出的。


 大多数的情况,对于未设置的logger来说,不需要自动继承祖先的配置,此时需要取消祖先叠加(additivity)在子logger上的设置,通过将additivity的标识设为false

 

 

 

 

 

BasicConfigurator.configure();
		
		Logger logger=Logger.getLogger("x.y");
		
		logger.setLevel(Level.TRACE);
		
		logger.log(Level.DEBUG, "设置的日志级别为:"+logger.getLevel());
		
		logger.trace("trace...");
		
		logger.debug("debug...");
		
		logger.info("info...");
		
		logger.warn("warn...");
		
		logger.error("error...");
		
		logger.fatal("fatal...");

 修改logger.setLevel(Level.TRACE)中的级别,即可知道 ALL<TRACE<DEBUG<WARN<ERROR<FATAL

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值