log4j 关于rootLogger以及一些问题

[img]http://dl2.iteye.com/upload/attachment/0092/2132/19b37064-3091-302a-9717-32f05663c677.jpg[/img]


今天遇到的一些问题。

package com.lj.basic.util;

import org.apache.log4j.Logger;


/**
* 这里把log4j.properties放到了basic-common中,此时如果调用basic-common的maven项目中没有log4j.properties文件<br/>
* 那么就会调用这里的log4j.properties来读取信息<br/>
* 但是如果maven项目中建立了log4j.properties,那么程序就不会再读取这里的property文件了。
* @author Administrator
*
*/
public final class MyLog4jLogger
{
private static Logger logger=Logger.getLogger(MyLog4jLogger.class);

private MyLog4jLogger(){}

public static void debug(Object obj){
logger.debug( obj);


}


public static void info(Object obj){
logger.info(obj);
}

public static void warn(Object obj){
logger.warn(obj);
}
}


1. 这个类是想拿来随处使用的, 不必在每个类中都new一个Logger对象。
但是似乎问题很多。 比如这样一来就没法显示调用logger方法的类了。(会一律被显示为这个MyLog4jLogger。)

2. 自定义包的问题。
如上图所示,

#log4j.logger.com.lj.cms.web=debug,cms
#log4j.logger.com.lj.core.dao=debug,cms
log4j.logger.com.lj=debug,cms


只有第三行是有效的,原因其实很简单。
因为Mylog4jLogger.java的位置在com.lj.basic.util里面。
log4j并不会管我在哪里调用的MyLog4jLogger的方法, 它只管这个类的位置在哪里。

因此上面改为:
log.4j.logger.com.lj.basic.util, 就可以了。


3. rootLogger的问题

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=warn, stdout


这个rootLogger似乎要屏蔽掉才行。
不然会导致我上面所有的debug信息输出两遍。

这里让我很不解。
难道我自定义了包路径以及级别, 不应该覆盖掉rootLogger的输出才对么?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值