最近項(xiàng)目需要使用log4j記錄日志辛辨,log4fj.properties配置文件的片段如下:
### log file ###
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.File=${PIF_CONF}/logs/retrofit.log
log4j.appender.debug.Append=true
log4j.appender.debug.Threshold=INFO
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%p]-[%c] %m%n
${PIF_CONF}就配置在/etc/profile文件中,但是測(cè)試了幾次,根本就沒有生效斗搞,根據(jù)網(wǎng)友的解決方案也沒有解決指攒。
于是決定自己看log4j的源碼org.apache.log4j.helpers.OptionConverter.java 文件,發(fā)現(xiàn)log4j 讀取環(huán)境變量使用System.getProperty()僻焚,通過測(cè)試程序允悦,發(fā)現(xiàn)System.getProperty("PIF_CONF") 為null,System.getenv("PIF_CONF") 確實(shí)獲取到了PIF_CONF的內(nèi)容虑啤。
所以在spring context 初始化的時(shí)候采用System.getenv("PIF_CONF") +System.setProperty("PIF_CONF","XXXX")將PIF_CONF設(shè)置進(jìn)props隙弛。這樣,log4j就可以讀取到log path了狞山。