Log4J入门

来源:互联网 发布:c语言小数16进制转换 编辑:程序博客网 时间:2024/04/28 07:44

一、System.out.println的局限性
   
    1、不能在运行时打开或者关闭;
   
    2、不能选择包或者类,在运行的时候打开或者关闭;
   
    3、输出的信息没有分级;
   
    4、只能输出文本信息;
   
    5、不能改变输出的位置,只能输出在控制台上。
       
   
二、log4j基础

    1、官方网址:
       
http://logging.apache.org/log4j       
   
    2、log4j的两种配置文件由下面的两个类解析
   
        解析log4j.properties :  PropertyConfigurator.configure( filePath );
       
        解析log4j.xml :  DOMConfigurator.configure( filePath )。      

    3、如何得到logger
   
        (1). Logger.getLogger( Test.class );
   
        (2). Logger.getLogger("sql");  --  得到配置文件中设置的sql logger

 

三、例子

    1、一个简单的使用log4j的例子 
    
        

import org.apache.log4j.*; public class HelloLog4j{     private static Logger logger = Logger.getLogger(HelloLog4j.class);         public static void main(String[] args){ StringBuffer sb = new StringBuffer();  // 记录debug级别的信息 logger.debug(sb); // 记录info级别的信息 logger.info(sb); // 记录warn级别的信息 logger.warn(sb); // 记录error级别的信息 logger.error(sb); // 记录fatal级别的信息 logger.fatal(sb);     } } 


        
        注: 运行这个例子时,需要log4j.properties 或 log4j.xml  --  放在src目录下.

    2、log4j.properties配置文件
   
        log4j.rootLogger=DEBUG,CONSOLE
        #rootLogger: 定义的是默认的logger,如果想自己定义到哪个包下的类的日志,可用log4j.logger.com.gdin...
        #DEBUG: 定义的日志级别是DEBUG,小于DEBUG级别的日志则不会输出
        #CONSOLE: 定义一个Appender, 该appender的具体信息如下

        # 应用于控制台
        log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
        log4j.appender.CONSOLE.Threshold=INFO
        log4j.appender.CONSOLE.Target=System.out
        log4j.appender.CONSOLE.Encoding=GBK
        #log4j.appender.CONSOLE.layout=org.apache.log4j.TTCCLayout
        log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
        log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
        #layout: 定义一个输出样式,有些不用定义它的样式,如TTCCLayout; 有些则需要,如PatternLayout

 

    4、配置文件
        log4j.properties
        log4j.xml
       
        (1)log4j.properties配置
            log4j.rootLogger = DEBUG, appender1
            log4j.appender.appender1 = org.apache.log4j.ConsoleAppender
            log4j.appender.appender1.layout = org.apache.log4j.SimpleLayout
           
        (2)RootLogger
        log4j.rootLogger = [lever], appenderName1, appenderName2, ...           
        如果上面的设定将输出等级设为INFO,就表示INFO~FATAL等级的信息将会输出,DEBUG等级的信息就会被忽略
                
        (3)为某个包设定 日志配置           
            log4j.logger.com.gdin = info, appender1
            log4j.logger.com.v512 = debug, appender1, appender2           
           
        (4)设置一个名称的logger
            log4j.logger.myname = debug, appender3           
           
        (5)如果只定义了log4j.logger.com.gdin = info,即定义了它的级别,没有定义它的appender.那么它会使用rootLogger中定义的appender.               
               
        (6).log4j的命名机制
            log4j中定义的命名机制是一棵树的形式,根就是rootLogger名称节点.
            如:Logger.getLogger("com.gdin.uc.TestA"),它会先到配置文档中找名称是com.gdin.uc.TestA的,
                即定义为log4j.logger.com.gdin.uc.TestA的.如果找不到,则找com.gdin.uc的.再找不到就找com.gdin的.再找不到就找com的.再找不到就找rootLogger.
           
            即是说,这棵树就像是java中的包定义一样,所以可以为不再包下的java源文件定义不同的日志机制.
       
五、关于性能影响
   
    1. log4j对程序的运行的性能影响非常小
   
    2. 还可以通过下面的方式,降低性能影响:
        if(logger.isDebugEnabled()){
            logger.debug( "x=" + longTimeRunning() );
        }

 

******************************log4j.properties 完整版***********************************

一、log4j.properties 完整版

        log4j.rootLogger=DEBUG,CONSOLE,DATABASE,FILE         log4j.addivity.org.apache=true         # 应用于控制台         log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender         log4j.appender.CONSOLE.Threshold=INFO         log4j.appender.CONSOLE.Target=System.out         log4j.appender.CONSOLE.Encoding=GBK         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.DATABASE=org.apache.log4j.jdbc.JDBCAppender         log4j.appender.DATABASE.URL=jdbc:oracle:thin:@192.168.0.103:1521:ORCL         log4j.appender.DATABASE.driver=oracle.jdbc.driver.OracleDriver         log4j.appender.DATABASE.user=Nation         log4j.appender.DATABASE.password=1         log4j.appender.CONSOLE.Threshold=WARN         log4j.appender.DATABASE.sql=INSERT INTO LOG4J(stamp,thread, infolevel,class,messages)             VALUES ('%d{yyyy-MM-dd HH:mm:ss}', '%t', '%p', '%l', '%m')         # INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')         # 写入数据库中的表LOG4J的Message字段中,内容%d(日期)%c: 日志信息所在地(类名)%p:             日志信息级别%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=C:/log4j/log         log4j.appender.A1.Encoding=GBK         log4j.appender.A1.Threshold=DEBUG         log4j.appender.A1.DatePattern='.'yyyy-MM-dd         log4j.appender.A1.layout=org.apache.log4j.PatternLayout         log4j.appender.A1.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L : %m%n         #应用于文件         log4j.appender.FILE=org.apache.log4j.FileAppender         log4j.appender.FILE.File=C:/log4j/file.log         log4j.appender.FILE.Append=false         log4j.appender.FILE.Encoding=GBK         log4j.appender.FILE.layout=org.apache.log4j.PatternLayout         log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %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.CONSOLE_FILE.Encoding=GBK         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         #自定义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 = yyflyons@163.com         log4j.appender.im.layout=org.apache.log4j.PatternLayout         log4j.appender.im.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.From=yyflyons@163.com         log4j.appender.MAIL.SMTPHost=www.wusetu.com         log4j.appender.MAIL.Subject=Log4J Message         log4j.appender.MAIL.To=yyflyons@126.com         log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout         log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
原创粉丝点击