Description: This blog introduces two log4j log file patterns we often use in our java project
Log4j Pattern Note
Pattern1
You can use this log pattern when you want log info be written into multi-log files instead of a single large file.
#file name : log4j.properties log4j.rootLogger = appendername log4j.appender.appendername=org.apache.log4j.RollingFileAppender # which file appender pattern your choose log4j.appender.appendername.File=log/rlog.log # name of the log file in which the program going to write log4j.appender.appendername.MaxFileSize = 100KB # threshold of the log file , if current log file size >= 100 KB # log4j will create a new log file to write in log4j.appender.appendername.MaxBackupIndex = 2 # limit the maximum number of log file log4j will create # here we set max log file number equals to 2 , if log4j create 2 files # next time , if the rlog.log.2's size is >= 100KB , # log4j will clean the rlog.log.1's content and continue writing new log info into rlog.log.1 log4j.appender.appendername.layout = org.apache.log4j.PatternLayout log4j.appender.appendername.layout.ConversionPattern = %p %t %c - %m %n # output log info pattern
Pattern2
You can use this log pattern if you would like your log info output to both console and file
This pattern also supports separating error log info into a single error log file
# file name : log4j.properties
log4j.rootLogger = debug,FILE,CONSOLE,ERRORFILE
# output log info to console
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target = System.out
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = [%p] %t %c %l - %m %n
# %p log info level : {DEBUG,INFO,WARN,ERROR,FATAL}
# %t name of the thread that generates log info
# %c log info is generated by which class
# %l which class , which thread , on which line 's event produce the log info
# %m output code's info
# output log info to log files
log4j.appender.FILE = org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.File = logs/rlog.log
log4j.appender.FILE.Threshold = DEBUG
# this is used to limit the log level ,
#if the log's level is higher than DEBUG ( like INFO, ERROR) output log info
log4j.appender.FILE.MaxFileSize=50KB
log4j.appender.FILE.MaxBackupIndex = 2
log4j.appender.FILE.layout = org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern = [%p] %t %c %l - %m %n
# output error (log level >= ERROR) into a single file
log4j.appender.ERRORFILE = org.apache.log4j.DailyRollingFileAppender
log4j.appender.ERRORFILE = logs/error.log
log4j.appender.ERRORFILE.Threshold = ERROR
log4j.appender.ERRORFILE.layout = org.apache.log4j.PatternLayout
log4j.appender.ERRORFILE.layout.ConversionPattern = [%p] %t %c %l - %m %n
Example
Here is a simple example to use log4j to output log info
// log4j.properties is under 'resources' folder
public class TestLog4j{
public static void main (String [] args ){
URL url = new URL("/log4j.properties") ;
PropertyConfigurator.configure(url.getPath()) ;
Logger logger = Logger.getLogger(TestLog4j.class) ;
logger.debug("this is a debug message") ;
logger.error("error info will output to two files") ;
}
}
end