使用org.apache.log4j.FileAppender可以把日志寫到文件中:
FileAppender配置
immediateFlush
這個標志默認為true,是否每次有消息產生都自動flush到文件中encoding
字符編碼threshold
appender的閾值thresholdFilename
日志文件的名稱fileAppend
默認設置為true,所有的日志都輸出到相同的文件bufferedIO
是否啟用緩沖區,默認是falsebufferSize
如果啟用了緩沖區,設置緩沖區的大小。默認是8kb.
下面是log4j.properties中FileAppender的相關配置:
##### Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE
##### Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
##### Set the name of the file
log4j.appender.FILE.File=${log}/log.out
##### Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true
##### Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug
##### Set the append to false, overwrite
log4j.appender.FILE.Append=false
##### Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
如果是配置XML的配置文件,可以參考如下:
``
多文件輸出——日志輪轉
如果需要把日志文件寫入到多個文件中,例如,按照文件的大小,到達一定的閾值后,就寫入另一個文件。
那么你可以使用apache.log4j.RollingFileAppender類,它繼承了FileAppender,並能設置一些屬性達到上面的需求。
添加的屬性如下:
- maxFileSize 這是日志輪轉的關鍵屬性,設置了日志的大小閾值,默認是10MB
- maxBackupIndex 這個屬性設置了文件會被備份的數目,默認是1
log4j.properties的配置如下
##### Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE
##### Define the file appender
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
##### Set the name of the file
log4j.appender.FILE.File=${log}/log.out
##### Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true
##### Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug
##### Set the append to false, should not overwrite
log4j.appender.FILE.Append=true
##### Set the maximum file size before rollover
log4j.appender.FILE.MaxFileSize=5KB
##### Set the the backup index
log4j.appender.FILE.MaxBackupIndex=2
##### Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
如果你希望配置xml文件,那么只要把RollingFileAppender以及它的兩個屬性添加進去就可以了。
上面的文件中,最大的文件大小為5kb,當超過這個大小后,就會創建新的文件;然后這個文件被命名為log.1;同理,如果有log.2就會重命名為log.3。如果索引數目最多設置為5,並且已經存在了log.5,那么log.5會被直接刪除。
多問鍵輸出——日期輪轉
如果想要每天更新一下日志文件,那么可以使用org.apache.log4j.DailyRollingFileAppender。
它增加的屬性如下:
DatePattern
這個屬性聲明了命名規則,默認是每一天的半夜24點更新一次
這個屬性可以按照下面的方式書寫:
'.'yyyy-MM
在每個月剛開始的時候更新一次'.'yyyy-MM-dd
每天半夜24點的時候更新'.'yyyy-MM-dd-a
每天12點和24點更新'.'yyyy-MM-dd-HH
每個小時更新一次'.'yyyy-MM-dd-HH-mm
每分鍾更新一次'.'yyyy-ww
每周的第一天更新
log4j.properties的配置如下
##### Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE
##### Define the file appender
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
##### Set the name of the file
log4j.appender.FILE.File=${log}/log.out
##### Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true
##### Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug
##### Set the append to false, should not overwrite
log4j.appender.FILE.Append=true
##### Set the DatePattern
log4j.appender.FILE.DatePattern='.' yyyy-MM-dd-a
##### Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
同樣,如果在xml中配置,添加相關的屬性即可。