码迷,mamicode.com
首页 > 其他好文 > 详细

log4j 基础教程

时间:2015-06-05 11:39:47      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:

参考引用自------>http://javacrazyer.iteye.com/blog/1135493

基于log4j的运行方式

import org.apache.log4j.Logger;   
import org.apache.log4j.PropertyConfigurator;   
public class TestLog4j {   
  static Logger logger = Logger.getLogger(TestLog4j.class);   
     public static void main(String args[]) {   
     PropertyConfigurator.configure("log4j.properties");   
     logger.debug("Here is some DEBUG");   
     logger.info("Here is some INFO");   
     logger.warn("Here is some WARN");   
     logger.error("Here is some ERROR");   
     logger.fatal("Here is some FATAL");   
   }   
}  

① Log4j的架构

Log4j系统的三大板块:日志写入器、日志输出终端、日志布局模式

技术分享

Logger类是日志包的核心,Logger的名称是大小写敏感的,并且名称之间有继承关系。子名由父名做前缀,用点号“.”分隔,如x.y是x.y.z的父亲Logger。Logger系统中有个根logger,是所有logger的祖先,它总是存在的,并且不可以通过名字获取,可以通过Logger.getRootLogger()来获取。获取Logger对象的方法很多,可以参考API文档,在某对象中,用该对象所属的类作为参数,调用Logger.getLogger(Class clazz)以获取logger对象被认为是目前所知最理智的命名logger方法。

②Log4j的日志级别(Level) 
       每个logger都有一个日志级别,用来控制日志的输出。未分配级别的logger将自动继承它最近的父logger的日志级别。Logger的由低到高级别如下: 
     ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF

③Log4j的输出终端(Appender接口)

org.apache.log4j.ConsoleAppender(控制台)     
org.apache.log4j.FileAppender(文件)     
org.apache.log4j.DailyRollingFileAppender(每天都产生一个日志文件)     
org.apache.log4j.RollingFileAppender(文件大小达到指定尺寸时产生一个新的日志文件,文件名称上会自动添加数字序号。)     
org.apache.log4j.WriterAppender(将日志信息以流的格式发送到任意指定的地方)

默认情况下,子logger将继承父logger的所有appenders。

④Log4j的输出布局模式(Layout接口)  
      Log4j提供Layout有以下几种:

org.apache.log4j.HTMLLayout(以HTML表格形式布局)     
org.apache.log4j.PatternLayout(可以灵活地指定布局模式)     
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)     
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息)

Log4j采用类似C语言中的printf函数的打印格式格式化日志信息。打印参数如下:

%m:输出代码中指定的消息。     
%p:输出优先级。     
%r:输入自应用启动到输出该log信息耗费的毫秒数。     
%c:输出所属的类目,通常就是所在类的全名。     
%n:输出一个回车换行符。Windows平台为“\r\n”,UNIX为“\n”。     
%d:输出日志时间点的日期或时间,默认格式为ISO8601,推荐使用“%d{ABSOLUTE}”,这个输出格式形如:“2007-05-07 18:23:23,500”,符合中国人习惯。     
%l:输出日志事件发生的位置,包括类名、线程名,以及所在代码的行数。    
%m:输出代码中指定的消息。  
%c:输出所属的类目,通常就是所在类的全名。  
%t:输出产生该日志线程的线程名。

⑤Log4j的配置

在实际使用中,Log4j一般是通过配置文件配置使用的。配置文件有两种,Java properties和XML文件。一般都选用properties文件来配置,因为简洁易读。下面只介绍Java properties的配置方式。 
对Log4j的配置就是对rootLogger和子Logger的配置。主要的配置项为:rootLogger、输出终端、输出布局模式,所有的配置项都必须以log4j开头。 
    配置文件的示例

##Log4J的配置之简单使它遍及于越来越多的应用中了     
##Log4J配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。择其一二使用就够用了。     
    
##此文件(log4j.properties)内容来自网络,非本文作者liigo原创。     
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 = FATAL     
log4j.appender.MAIL.BufferSize = 10    
log4j.appender.MAIL.SMTPHost = www.baidu.com
log4j.appender.MAIL.From = king@www.baidu.com  
log4j.appender.MAIL.SMTPUsername=king
log4j.appender.MAIL.SMTPPassword=123456
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     
    
# 结束

log4j.rootLogger = [ level ] , appenderName , appenderName , … 解释:

 其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,只有等于及高于这个级别的才进行处理,则应用程序中所有DEBUG级别的日志信息将不被打印出来。ALL:打印所有的日志,OFF:关闭所有的日志输出。 appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。

log4j.addivity.org.apache = true 解释 : 它是 子Logger 是否继承 父Logger 的 输出源(appender) 的标志位。具体说,默认情况下子Logger会继承父Logger的appender,也就是说子Logger会在父Logger的appender里输出。若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。

log4j 基础教程

标签:

原文地址:http://www.cnblogs.com/whatlonelytear/p/4553877.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!