log4j学习笔记

Log4j 有三个主要组件:loggers、appenders 和 layouts。这三个组件协同工作,使开发
人员能够根据消息类型和级别来记录消息,并且在程序运行期控制消息的输出格式位置。
Logger:日志记录器
    Logger 负责处理日志记录的大部分操作。
Appender:日志信息的输出目的地
    Appender 负责控制日志记录操作的输出。
Layout:日志格式化器
    Layout 负责格式化Appender 的输出。
1.Logger-日志记录器
   Logger是log4j里的核心组件,主要实现如下:
   package org.apache.Log4j;
    public class Logger {
    // Creation & retrieval methods:
    public static Logger getRootLogger();
    public static Logger getLogger(String name);
    // printing methods:
    public void debug(Object message);
    public void info(Object message);
    public void warn(Object message);
    public void error(Object message);
    // generic printing method:
    public void log(Level l, Object message);
}

默认时,log4j组件设置了一个根(rootLogger)实例,但是没有对其进行输出级别,输出目的地,输出格式进行定义.故在用Log4j时,如果没有对其进行配置,在运行时则会报错。rootLogger实例不能通过实例名来获得,只能通过其静态方法 getRootLogger()来获得。
   对于每个具体的类来说,如果需用到Logger实例,必须创建Logger实例或获得已知Logger实例,可以通过用 Logger.getLogger(this.getClasss())来实现(如果是与Commons-logging组件合用,则调用LogFactory.getLog(this.getClass()))。
   创建一个新的Logger实例,需要对其进行初始化,包括输出级别,输出目的地(输出格式与appender相关联)。如果不进行任何初始化,则输出级别遵循一直向上继承,直到最近的父辈的原则,appender遵循输出源的可添加性原则,见下面appdender介绍。
   例如:名为com.hailin.test的Logger实例没有初始化,它会去继承名为com.hailin的实例初始化,如果 com.hailin的Logger实例配置存在,则就停止查找,如果未找到,就一直查找下去,直至rootLogger。
   Loggers 可以被分配的级别包括:DEBUG、INFO、WARN、ERROR、FATAL。对于标准级别,我们定义DEBUG<INFO<WARN<ERROR<FATAL。
2.appender-输出目的地
  输出源的可添加性(Appender Additivity ):一个名为C 的logger 的日志定义的输出将延续到 它自身以及它的ancestor logger 的appenders。 然而,logger C 的一个祖先logger P,它的附加标志被设为false,那么C 的输出将被定位到  所有C 的appender,以及从它开始上溯到P 的所有ancestor logger 的appender。
   Log4j 提供的appender有以下几种: 
   org.apache.log4j.ConsoleAppender (控制台), 
   org.apache.log4j.FileAppender (文件), 
   org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
   org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件), 
   org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)
3.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 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
   %r 输出自应用启动到输出该log 信息耗费的毫秒数 
   %c 输出所属的类目,通常就是所在类的全名 
   %t 输出产生该日志事件的线程名 
   %n 输出一个回车换行符,Windows 平台为"/r/n",Unix 平台为"/n" 
   %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比 如:%d{yyy MMM dd    HH:mm:ss,SSS},输出类似:2002 年 10 月 18 日  22:10:28,921
    %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:
    Testlog4.main(TestLog4.java:10)
4.log4j.properties的通用模板
  #rootLogger
  log4j.rootLogger = INFO,FILE
  #应用于控制台
  log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
  log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
  log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}-[TEST] %p [%t] %  C.%M(%L)-%m%n
 #应用于文件   
  log4j.appender.FILE = org.apache.log4j.FileAppender    
  log4j.appender.FILE.File = D://app//personalProject//classes//hailin.log
  #log4j.appender.FILE.Append 属性是否覆盖源文件,true为不覆盖,false为覆盖  
  log4j.appender.FILE.Append = true     
  log4j.appender.FILE.layout = org.apache.log4j.PatternLayout
  log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}-[TEST] %p [%t] %C.%M(%L)-%m%n
  #应用于文件回滚    
  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         
  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
  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 =  xx@sina.com.cn 
  log4j.appender.MAIL.SMTPHost = www.sian.com.cn    
  log4j.appender.MAIL.Subject = Log4J Message    
  log4j.appender.MAIL.To = xx@sina.com.cn   
  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  =   xx@sina.com.cn 
  log4j.appender.im.layout = org.apache.log4j.PatternLayout    
  log4j.appender.im.layout.ConversionPattern  = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n
 #定义具体的类日志属性
  log4j.logger.com.tongda.whl=DEBUG,CONSOLE
  log4j.logger.com.tongda.whl.log=DEBUG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值