使得“Log4J日誌檔案儲存路徑”可配置
阿新 • • 發佈:2019-02-04
使用Log4J日誌框架,可以配置將日誌記錄到檔案中,示例配置如下:
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.Threshold=INFO
log4j.appender.A1.File=log/info.log
log4j.appender.A1.Append=true
log4j.appender.A1.Encoding=GBK
log4j.appender.A1.MaxFileSize=256MB
log4j.appender.A1.MaxBackupIndex=60
log4j.appender .A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%d{yy-MM-dd HH:mm:ss}], [%p] [%l] -%m%n
上述配置中日誌檔案的儲存路徑是:當前專案路徑下“/log/info.log”。
有些應用場景中,日誌檔案的儲存路徑需要可配置。Log4J支援這種應用場景,具體是採用如下兩種配置形式:
log4j.appender.A1.File=${LOGDIR}/log/info.log
和log4j.appender.A1.File=${env:LOGDIR}/log/info.log
一、第一種形式
Log4J日誌框架在載入的時候會使用相應的Java程序變數值去進行替換。比如說現在“LOGDIR”這個Java程序變數的值為“/home/dsl”,那麼log4j.appender.A1.File=${LOGDIR}/log/info.log
最後會被替換成“log4j.appender.A1.File=/home/dsl/log/info.log”。
二、第二種形式
Log4J日誌框架在載入的時候會使用相應的系統環境變數值去進行替換。比如說現在“LOGDIR”這個系統環境變數的值為“/home/dsl”,那麼log4j.appender.A1.File=${env:LOGDIR}/log/info.log
“Log4J 2.x”才支援第二種形式。其實“Log4J 2.x”不支援“Log4J 1.x”的“properties檔案格式”的配置形式,而只支援“XML檔案格式”的配置形式,示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<File name="MyFile" fileName="${env:LOGDIR}/logs/app.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</File>
<Async name="Async">
<AppenderRef ref="MyFile"/>
</Async>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Async"/>
</Root>
</Loggers>
</Configuration>