2017-04-24 46 views

回答

0

我假設你有這樣的事情在你的log4j屬性:

log4j.appender.file.File=C:\\logging.log 

你可以做的是替換該行:

log4j.appender.file.File=${mylog} 

然後在每個項目中,假設你有爲每個項目配置的log4j.properties,你應該可以這樣做:

System.setProperty("mylog", "specific_filepath_for_project"); 
0

Fo例如,您的兩個軟件包的日誌文件爲:

com.abhi.packageOne; -> packageOneFile.log 
com.abhi.packageTwo; -> packageTwoFile.log 

將rootLogger添加爲文件或控制檯。你可以保留任何記錄水平,即跟蹤,信息,errror等按您的要求

log4j.rootLogger=Debug, file 

你必須爲你的兩個包

log4j.appender.MAIN_LOG=org.apache.log4j.RollingFileAppender 
log4j.appender.MAIN_LOG.File=/path/main.log 
log4j.appender.MAIN_LOG.layout=org.apache.log4j.PatternLayout 

log4j.appender.PACKAGE_ONE=org.apache.log4j.RollingFileAppender 
log4j.appender.PACKAGE_ONE.File=/path/packageOneFile.log 
log4j.appender.PACKAGE_ONE.layout=org.apache.log4j.PatternLayout 

log4j.appender.PACKAGE_TWO=org.apache.log4j.RollingFileAppender 
log4j.appender.PACKAGE_TWO.File=/path/packageTwoFile.log 
log4j.appender.PACKAGE_TWO.layout=org.apache.log4j.PatternLayout 

您需要設置相應的加創建兩個新的附加目的地。

什麼是addictivity?

爲了避免日誌冗餘,我們可以使用Log4j可加性。只需將Log4j記錄器的additivity屬性設置爲false,然後傳遞到該記錄器的日誌消息就不會傳播到其父記錄器。因此,我們新的Log4j配置文件將爲:

log4j.additivity.com.abhi.packageOne=false 
log4j.additivity.com.abhi.packageTwo=false 

log4j.logger.com.abhi.packageOne=DEBUG, PACKAGE_ONE 
log4j.logger.com.abhi.packageTwo=DEBUG, PACKAGE_TWO 

log4j.rootLogger=DEBUG, MAIN_LOG 

其中MAIN_LOG是您的常規日誌文件。如果您想在MAIN_LOG中打印來自PACKAGE_ONE和PACKAGE_TWO的日誌,請在下面的行中加入。

log4j.rootLogger=DEBUG, MAIN_LOG , PACKAGE_ONE , PACKAGE_TWO 
相關問題