log4j.properties的一点介绍

Posted on February 7, 2007

0


下面对log4j.properties文件内容作一点点介绍,以后文所附log4j.properties文件为例:

log4j.rootLogger = DEBUG,CONSOLE,A1 

log4j.rootLogger是最最重要的一个属性了,它定义日志信息的“输出级别”和“输出目的地”。关键看“=”后面的值,“DEBUG, CONSOLE,A1”这里我们要把它分成两部分:第一个逗号之前的是第一部分,指定“输出级别”;后面的是第二部分,指定“输出目的地”。可以同时指定多个“输出目的地”,以逗号隔开。“输出目的地”就是我们自己定义的了,就在log4j.properties的后面部分,此文件定义的“输出目的地”有CONSOLE、FILE、ROLLING_FILE、SOCKET、LF5_APPENDER、MAIL、DATABASE、A1、im。该文件之所以可作主模板,就是因为它比较全面地定义了各种常见的输出目的地(控制台、文件、电子邮件、数据库等)。

好,下面详细解释“log4j.rootLogger=DEBUG, CONSOLE,A1”这一行:指定“输出级别”是“DEBUG”,即,仅输出级别大于等于“调试(DEBUG)”的日志信息。如果此处指定的是“WARN”则仅调用warn()、error()、fatal()方法输出的日志信息才被输出到“输出目的地”,而调用debug()、info()方法输出的日志信息不被输出到“输出目的地”。明白了吗?Log4j就是以这种方式来过滤控制日志信息的输出与否,这也是对日志信息进行级别分类的目的。指定“输出目的地”是“CONSOLE”和“A1”,即,将指定的日志信息(根据日志级别已进行了过滤)同时输出到的“控制台”和“SampleMessages.log4j文件”。为什么说“CONSOLE”表示将日志信息输出到“控制台”呢?那就要看一下后文的定义了:

log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender 
log4j.appender.Threshold = DEBUG 
log4j.appender.CONSOLE.Target = System.out 
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern = [framework] % d - % c -%- 4r [ % t] %- 5p % c % x - % m % n 
#log4j.appender.CONSOLE.layout.ConversionPattern = [start] % d {DATE} [DATE] % n % p[PRIORITY] % n % x[NDC] % n % t[THREAD] n % c[CATEGORY] % n % m[MESSAGE] % n % n 

为什么说“A1”表示将日志信息输出到“SampleMessages.log4j文件”呢?还要看后文的定义:

log4j.appender.A1 = org.apache.log4j.DailyRollingFileAppender 
log4j.appender.A1.File = SampleMessages.log4j 
log4j.appender.A1.DatePattern = yyyyMMdd - HH ' .log4j ' 
log4j.appender.A1.layout = org.apache.log4j.xml.XMLLayout 

注意:这里的定义没有指定输出文件的路径,它的路径实际上是 java.user.path的值。您应该已经注意到,在定义“输出目的地”时,还可以指定日志格式、时间、布局等相关信息。略过。

附:一个有用的log4j.properties文件模板

##Log4J的配置之简单使它遍及于越来越多的应用中了    
 
##Log4J配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。择其一二使用就够用了。    

##此文件(log4j.properties)内容来自网络
log4j.rootLogger = DEBUG, CONSOLE,A1    
log4j.addivity.org.apache = true 

# 应用于控制台     
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender     
log4j.appender.Threshold = DEBUG     
log4j.appender.CONSOLE.Target = System.out     
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout     
log4j.appender.CONSOLE.layout.ConversionPattern = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n     
#log4j.appender.CONSOLE.layout.ConversionPattern = [start] % d  {DATE} [DATE] % n % p[PRIORITY] % n % x[NDC] % n % t[THREAD] n % c[CATEGORY] % n % m[MESSAGE] % n % n     

#应用于文件    
log4j.appender.FILE = org.apache.log4j.FileAppender     
log4j.appender.FILE.File = file.log     
log4j.appender.FILE.Append = false  
log4j.appender.FILE.layout = org.apache.log4j.PatternLayout     
log4j.appender.FILE.layout.ConversionPattern = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n     
# Use  this  layout  for  LogFactor  5  analysis    

# 应用于文件回滚     
log4j.appender.ROLLING_FILE = org.apache.log4j.RollingFileAppender     
log4j.appender.ROLLING_FILE.Threshold = ERROR     
log4j.appender.ROLLING_FILE.File = rolling.log     
log4j.appender.ROLLING_FILE.Append = true 
log4j.appender.ROLLING_FILE.MaxFileSize = 10KB     
log4j.appender.ROLLING_FILE.MaxBackupIndex = 1  
log4j.appender.ROLLING_FILE.layout = org.apache.log4j.PatternLayout     
log4j.appender.ROLLING_FILE.layout.ConversionPattern = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n     

#应用于socket     
log4j.appender.SOCKET = org.apache.log4j.RollingFileAppender     
log4j.appender.SOCKET.RemoteHost = localhost     
log4j.appender.SOCKET.Port = 5001
log4j.appender.SOCKET.LocationInfo = true  
# Set up  for  Log Facter  5 
log4j.appender.SOCKET.layout = org.apache.log4j.PatternLayout     
log4j.appender.SOCET.layout.ConversionPattern = [start] % d  {DATE} [DATE] % n % p[PRIORITY] % n % x[NDC] % n % t[THREAD] % n % c[CATEGORY] % n % m[MESSAGE] % n % n     

# Log Factor  5  Appender    
log4j.appender.LF5_APPENDER = org.apache.log4j.lf5.LF5Appender     
log4j.appender.LF5_APPENDER.MaxNumberOfRecords = 2000 
 
# 发送日志给邮件     
log4j.appender.MAIL = org.apache.log4j.net.SMTPAppender     
log4j.appender.MAIL.Threshold = FATA    
log4j.appender.MAIL.BufferSize = 10 
log4j.appender.MAIL.From = web@www.wuset.com   
log4j.appender.MAIL.SMTPHost = www.wusetu.com     
log4j.appender.MAIL.Subject = Log4J Message     
log4j.appender.MAIL.To = web@www.wusetu.com  
log4j.appender.MAIL.layout = org.apache.log4j.PatternLayout     
log4j.appender.MAIL.layout.ConversionPattern = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n     

# 用于数据库     
log4j.appender.DATABASE = org.apache.log4j.jdbc.JDBCAppender     
log4j.appender.DATABASE.URL = jdbc:mysql: // localhost:3306/test   
log4j.appender.DATABASE.driver = com.mysql.jdbc.Driver     
log4j.appender.DATABASE.user = root     
log4j.appender.DATABASE.password =      
log4j.appender.DATABASE.sql = INSERT INTO LOG4J (Message) VALUES ( ' [framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n ' )     
log4j.appender.DATABASE.layout = org.apache.log4j.PatternLayout     
log4j.appender.DATABASE.layout.ConversionPattern = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n     
log4j.appender.A1 = org.apache.log4j.DailyRollingFileAppender     
log4j.appender.A1.File = SampleMessages.log4j     
log4j.appender.A1.DatePattern = yyyyMMdd - HH ' .log4j '      
log4j.appender.A1.layout = org.apache.log4j.xml.XMLLayout     

#自定义Appender     
log4j.appender.im  =  net.cybercorlin.util.logger.appender.IMAppender     
log4j.appender.im.host  =  mail.cybercorlin.net     
log4j.appender.im.username  =  username     
log4j.appender.im.password  =  password     
log4j.appender.im.recipient  =  corlin@cybercorlin.net   
log4j.appender.im.layout = org.apache.log4j.PatternLayout     
log4j.appender.im.layout.ConversionPattern  = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n    
 
# 结束   
Posted in: Development