特別提示:本人博客部分有參考網絡其他博客,但均是本人親手編寫過並驗證通過。如發現博客有錯誤,請及時提出以免誤導其他人,謝謝!歡迎轉載,但記得標明文章出處:
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指定配置文件
初始配置可以在靜態塊中執行這段代碼,
當需改變配置是,執行這段代碼使更改生效。