特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过。如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/mao2080/
1、问题描述
一般log4j的使用都是在log4j.properties文件中指定配置参数,然后框架自动初始化,但是有些特殊的情况需要写程序手动初始化,并为它传递参数,如日志文件的存放位置要配置成可变,文件大小也要可变等等。如果用配置文件来指定,系统初始化log4j后就不能再改变了。
log4j提供了动态参数配置的功能,程序只需要在使用log记录器写日子之前重新使配置生效即可,具体为:
1. 用Properties保存配置参数。
2. 用PropertyConfigurator来是配置生效。
2、配置参数
Properties pro=new Properties(); pro.put("log4j.rootLogger", "info,A"); pro.put("log4j.appender.A", "org.apache.log4j.DailyRollingFileAppender"); pro.put("log4j.appender.A.File", "D:/logs/sys.log"); pro.put("log4j.appender.A.DatePattern", "'.'yyyy-MM-dd-HH"); pro.put("log4j.appender.A.layout", "org.apache.log4j.PatternLayout"); pro.put("log4j.appender.A.layout.ConversionPattern", "%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m -(:%L)%n");
3、使配置生效
PropertyConfigurator.configure(pro);
也可以预先指定多个配置文件,然后在configure(path)的path指定配置文件
初始配置可以在静态块中执行这段代码,
当需改变配置是,执行这段代码使更改生效。