log4j.rootLogger=debug, R, L# R is the RollingFileAppender that outputs to a rolling log # file called sample.log.log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=sample1.log# Define a pattern layout for the file. # For more information on conversion characters (i.e. d,p,t,c,l,m,n) # please see the PatternLayout class of the Log4j API.log4j.appender.R.layout=org.apache.log4j.PatternLayout# The following normally appears on one single line. log4j.appender.R.layout.ConversionPattern=[slf5s.start]%d{dd MM yyyy HH:mm:ss,S}[slf5s.DATE]%n\ %p[slf5s.PRIORITY]%n%x[slf5s.NDC]%n%t[slf5s.THREAD]%n\ %c[slf5s.CATEGORY]%n%l[slf5s.LOCATION]%n%m[slf5s.MESSAGE]%n%n# Set the max size of the file log4j.appender.R.MaxFileSize=500KB # R is the RollingFileAppender that outputs to a rolling log # file called sample.log.log4j.appender.L=org.apache.log4j.RollingFileAppender log4j.appender.L.File=sample2.log# Define a pattern layout for the file. # For more information on conversion characters (i.e. d,p,t,c,l,m,n) # please see the PatternLayout class of the Log4j API.log4j.appender.L.layout=org.apache.log4j.PatternLayout# The following normally appears on one single line. log4j.appender.L.layout.ConversionPattern=[slf5s.start]%d{dd MM yyyy HH:mm:ss,S}[slf5s.DATE]%n\ %p[slf5s.PRIORITY]%n%x[slf5s.NDC]%n%t[slf5s.THREAD]%n\ %c[slf5s.CATEGORY]%n%l[slf5s.LOCATION]%n%m[slf5s.MESSAGE]%n%n# Set the max size of the file log4j.appender.L.MaxFileSize=500KB
# file called sample.log.log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=sample1.log# Define a pattern layout for the file.
# For more information on conversion characters (i.e. d,p,t,c,l,m,n)
# please see the PatternLayout class of the Log4j API.log4j.appender.R.layout=org.apache.log4j.PatternLayout# The following normally appears on one single line.
log4j.appender.R.layout.ConversionPattern=[slf5s.start]%d{dd MM yyyy HH:mm:ss,S}[slf5s.DATE]%n\
%p[slf5s.PRIORITY]%n%x[slf5s.NDC]%n%t[slf5s.THREAD]%n\
%c[slf5s.CATEGORY]%n%l[slf5s.LOCATION]%n%m[slf5s.MESSAGE]%n%n# Set the max size of the file
log4j.appender.R.MaxFileSize=500KB
# R is the RollingFileAppender that outputs to a rolling log
# file called sample.log.log4j.appender.L=org.apache.log4j.RollingFileAppender
log4j.appender.L.File=sample2.log# Define a pattern layout for the file.
# For more information on conversion characters (i.e. d,p,t,c,l,m,n)
# please see the PatternLayout class of the Log4j API.log4j.appender.L.layout=org.apache.log4j.PatternLayout# The following normally appears on one single line.
log4j.appender.L.layout.ConversionPattern=[slf5s.start]%d{dd MM yyyy HH:mm:ss,S}[slf5s.DATE]%n\
%p[slf5s.PRIORITY]%n%x[slf5s.NDC]%n%t[slf5s.THREAD]%n\
%c[slf5s.CATEGORY]%n%l[slf5s.LOCATION]%n%m[slf5s.MESSAGE]%n%n# Set the max size of the file
log4j.appender.L.MaxFileSize=500KB
在程序中按类名取Logger定义:
log4j.rootLogger=debug,stdout
log4j.logger.com.mypkg=debug,mypkg
log4j.logger.com.mypkg.db=info,db
log4j.logger.com.mypkg.mail=debug,maillog4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5r [%5p][%c{2}] %m%nlog4j.appender.mypkg=org.apache.log4j.RollingFileAppender
log4j.appender.mypkg.File=system.log
log4j.appender.mypkg.Append=true
log4j.appender.mypkg.MaxFileSize=1MB
log4j.appender.mypkg.MaxBackupIndex=1
log4j.appender.mypkg.layout=org.apache.log4j.PatternLayout
log4j.appender.mypkg.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%nlog4j.appender.db=org.apache.log4j.FileAppender
log4j.appender.db.File=db.log
log4j.appender.db.Append=true
log4j.appender.db.layout=org.apache.log4j.PatternLayout
log4j.appender.db.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%nlog4j.appender.mail=org.apache.log4j.FileAppender
log4j.appender.mail.File=mail.log
log4j.appender.mail.Append=true
log4j.appender.mail.layout=org.apache.log4j.PatternLayout
log4j.appender.mail.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%nlog4j.additivity.com.mypkg=false
log4j.additivity.com.mypkg.db=false
log4j.additivity.com.mypkg.mail=false使用:
package com.mypkg;
public class Class1
{
private static Logger logger = Logger.getLogger(Class1.class); ...
if(logger.isDebugEnabled())
logger.debug("debug info");
...
}package com.mypkg.db;
public class Class2
{
private static Logger logger = Logger.getLogger(Class2.class); ...
if(logger.isDebugEnabled())
logger.debug("debug info");
...
}package com.mypkg.mail;
public class Class3
{
private static Logger logger = Logger.getLogger(Class3.class); ...
if(logger.isDebugEnabled())
logger.debug("debug info");
...
}这样一来:
com.mypkg.mail下的类(Class3)的日志就会记入mail.log
com.mypkg.db下的类(Class2)的日志就会记入db.log
com.mypkg下的类(Class1)及类似com.mypkg.pkg1这样的未定义相应Logger的包下的类(com.mypkg.pkg1.Class4)的日志就会记入system.log
com.mypkg以外的类(com.pkg1.Class5)的日志就会记录到rootLogger,即输出到控制台不管增加还是删除日志配置项,都不需要修改程序:
如果想去掉其中一个,如mail,只需从配置文件中去掉"log4j.logger.com.mypkg.mail=info,mail"这一行,去掉后com.mypkg.mail包下的类(如Class3)的日志就会记入system.log中。 如果要新增Logger,如com.mypkg.pkg2,只需在配置文件中增加类似配置,com.mypkg.pkg2包下的类的日志就会记入新增的log文件,而不再记入system.log文件。还可以为指定类配置一个logger,如为类com.mypkg.db.ConnectionPool配置一个logger:
log4j.logger.com.mypkg.db.ConnectionPool=debug,pool log4j.appender.pool=org.apache.log4j.FileAppender
log4j.appender.pool.File=pool.log
log4j.appender.pool.Append=true
log4j.appender.pool.layout=org.apache.log4j.PatternLayout
log4j.appender.pool.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n log4j.additivity.com.mypkg.db.ConnectionPool=false这样一来,ConnectionPool类的日志就会记入pool.log,不会记入db.log
log4j.logger.com.pkg1=debug,system
log4j.logger.com.pkg2=info,system
这样的话com.pkg1和com.pkg2下的日志会分别以degug和info级别输出到system这个appender指定的文件中
log4j.logger.com.pkg1=debug,system
log4j.logger.com.pkg2=info,system
这样的话com.pkg1和com.pkg2下的日志会分别以degug和info级别输出到system这个appender指定的文件中