Log4j中的默认配置文件需要存放在classpath目录下

【前言】使用BasicConfigurator.configure();可以对rootlog进行默认的配置,但是我又想改变一下默认的rootlogger的配置。发现把log4j.properties放在classpath的目录下是可以实现的。

BasicConfigurator.configure()

BasicConfigurator.configure()方法使用最简的方法配置log4j环境。注:所谓配置log4j环境,就是指配置root logger,因为所有其它的logger都是root logger的后代,所以它们(默认情况下)都将继承root logger的性质。

 

BasicConfigurator.configure()完成的任务是:

  • 用默认pattern创建PatternLayout对象p:
    PatternLayout p = new PatternLayout("%-4r[%t]%-5p%c%x - %m%n");
  • 用p创建ConsoleAppender对象a,目标是system.out,标准输出设备:
    ConsoleAppender a = new ConsoleAppender(p,ConsoleAppender.SYSTEM_OUT);
  • 为root logger增加一个ConsoleAppender p:
    rootLogger.addAppender(p);
  • 把root logger的log level设置为DEBUG级别:
    rootLogger.setLevel(Level.DEBUG);

为了改变这个配置的配置,需要将log4j.properties(当然这个文件中有我想要的配置),放在classpath目录下:log4j.properties needs to be on the classpath where log4j can find it.

 

【疑问】

1. log4j.properties这个配置文件的名称是否不能变成其他的名称,像my.properties?

【后续解释】可以,通过configure指定log4j的配置文件路径和名称

PropertyConfigurator.configure(dir+"/conf/my.properties");

 

2. 为什么即使用了log4j.properties来制定root logger的配置信息,但是实际上,打印出root logger的配置信息可以看出是由两部分组成的,也就是说输出到console的配置还是保留的。为什么呢?

 

log4j.appender.A0=org.apache.log4j.RollingFileAppender
log4j.appender.A0.append=true
log4j.appender.A0.bufferSize=8192
log4j.appender.A0.bufferedIO=false
log4j.appender.A0.file=./root.log
log4j.appender.A0.immediateFlush=true
log4j.appender.A0.maxBackupIndex=10
log4j.appender.A0.maximumFileSize=512000
log4j.appender.A0.layout=org.apache.log4j.PatternLayout
log4j.appender.A0.layout.contentType=text/plain
log4j.appender.A0.layout.conversionPattern=%d{yyyy-MM-dd} %d{HH:mm:ss,SSS} %-4r %p: (%l) %m %n
log4j.appender.A0=org.apache.log4j.ConsoleAppender
log4j.appender.A0.immediateFlush=true
log4j.appender.A0.target=System.out
log4j.appender.A0.layout=org.apache.log4j.PatternLayout
log4j.appender.A0.layout.contentType=text/plain
log4j.appender.A0.layout.conversionPattern=%r [%t] %p %c %x - %m%n
log4j.rootCategory=DEBUG, A0, A0

【参考url】

http://bytes.com/topic/java/answers/16405-log4j-where-put-properties-file

http://heavyz.sourceforge.net/homepage/homepage_zh/comp/notes/log4j.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Log4j的包下载完成后,解压,将其打包好的的log4j-1.x.x.jar导入你的工程LIBLog4j之所以受欢迎的原因之一是它的灵活性。Log4j提供了灵活的配置方法,默认是调用BasicConfigurator.configure()来进行配置,但如果只是简单的调用BasicConfigurator.configure()来进行配置工作,那么所有的配置都是固定的,不方便以后修改配置。另一种是动态配置,Log4j提供了PropertyConfigurator.configure(……)来动态配置,参数可以是一个properties文件所在路径的String对象,可以是一个properties文件所在路径的URL对象,也可以是一个properties对象。如果要用XML文件来配置信息,则可用类型的DOMConfigurator()函数来从一个XML文件加载配置信息。这种方式更方便修改配置。 动态配置 package http; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.apache.log4j.xml.DOMConfigurator; public class Log4jDemo { static Logger log = Logger.getLogger(Log4jDemo.class.getClass()); /** * main * @param args */ public static void main(String[] args) { BasicConfigurator.configure();//默认配置 PropertyConfigurator.configure("c:/log4j.properties"); //动态配置,参数可以是一个properties文件所在路径的String对象 //可以是一个properties文件所在路径的URL对象,也可以是一个properties对象 DOMConfigurator.configure("c:/log4j.xml");//XML配置文件 //PropertyConfigurator.configure()的参数还可以是XML、Properties对象 //下面就可使用log4j log.info("info"); log.debug("debug"); log.error("error"); log.warn("warn"); } }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值