<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-126  評(píng)論-247  文章-5  trackbacks-0

    Log4j ( Log for Java ) 是 Apache 下的一個(gè)開源項(xiàng)目,通過 Log4j,可以將程序運(yùn)行的信息輸送到指定的目的地。這個(gè)目的地可以是控制臺(tái)、文件、郵箱等。

    Log4j 支持兩種格式的文件配置,即 properties 和 xml 兩種格式的文件。下面將要介紹的是采用 properties 格式的配置。

     log4j.properties 配置示例  


    log4j.rootLogger
    = INFO, logOutput

    log4j.appender.logOutput = org.apache.log4j.FileAppender

    log4j.appender.logOutput.file = src/main/resources/log/demoLog.log

    log4j.appender.logOutput.layout = org.apache.log4j.PatternLayout

    log4j.appender.logOutput.layout.conversionPattern = %n%n%d{yyyy-MM-dd HH:mm:ss}%n%p  %c  %L%n%m



    ① [ 配置日志級(jí)別和輸出源 ]

          log4j.rootLogger = 級(jí)別,輸出源1,輸出源2 … …

         日志信息優(yōu)先級(jí)別 :  ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

         常用優(yōu)先級(jí)別 : DEBUG < INFO < WARN < ERROR

             - DEBUG : 程序的調(diào)試信息

             - INFO  :  程序的一般信息,例如,用戶的登錄、登出,方法執(zhí)行成功信息等

             - WARN :  程序的警告信息

             - ERROR :  程序的嚴(yán)重錯(cuò)誤信息,例如,程序的執(zhí)行拋出異常

             Tips : 只有當(dāng)日志信息的優(yōu)先級(jí)別大于等于配置的日志信息級(jí)別,日志信息才會(huì)被記錄到日志。

         日志輸出源 : 

             - 日志輸出源的個(gè)數(shù)可以是一個(gè),也可以是多個(gè),多個(gè)輸出源的時(shí)候,輸出源與輸出源之間用逗號(hào)分隔

             - 日志輸出源的名字可以根據(jù)需要,自定義起名

    ② [ 指定輸出源輔助類 ]

          log4j.appender.輸出源名稱 = Appender.class

          常用的 Appender ( 在 log4j-version.jar 的 org.apache.log4j 包下 ) : 

          1. org.apache.log4j.FileAppender(文件)

          2. org.apache.log4j.ConsoleAppender(控制臺(tái))

          3. org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個(gè)日志文件)

          4. org.apache.log4j.RollingFileAppender(文件大小到達(dá)指定尺寸的時(shí)候產(chǎn)生一個(gè)新的文件)

    ③ [ 指定輸出源文件存放路徑 ]

          log4j.appender.輸出源名稱.file = path ( 日志具體存放路徑 )

    ④ [ 指定輸出源文件的格式布局 ]

          log4j.appender.輸出源名稱.layout = Layout.class

         常用的 Layout ( 在 log4j-version.jar 的 org.apache.log4j 包下 ) : 

         1. org.apache.log4j.SimpleLayout  ( 簡(jiǎn)單的布局方式,含日志信息的級(jí)別和信息 )

         2. org.apache.log4j.PatternLayout  ( 可自定義的布局模式 )

         3. org.apache.log4j.HTMLLayout   ( 以 HTML 方式布局 )

    ⑤ [ 自定義布局模式,可選 ]

          log4j.appender.輸出源名稱.layout.conversionPattern

         %p : 輸出日志信息優(yōu)先級(jí),即DEBUG,INFO,WARN,ERROR,F(xiàn)ATAL …

         %d : 輸出日志時(shí)間點(diǎn)的日期或時(shí)間,默認(rèn)格式為ISO8601,也可以在其后指定格式,例如:%d{yyy-MMM-dd HH:mm:ss},輸出類似:2012-10-10 12:20:18 

         %r : 輸出自應(yīng)用啟動(dòng)到輸出該log信息耗費(fèi)的毫秒數(shù)

         %c : 輸出日志信息所屬的類,通常就是所在類的全名

         %t : 輸出產(chǎn)生該日志事件的線程名

         %l : 輸出日志事件的發(fā)生位置

         %x : 輸出和當(dāng)前線程相關(guān)聯(lián)的信息

         %% : 輸出一個(gè)"%"字符

         %F : 輸出日志消息產(chǎn)生時(shí)所在的文件名稱

         %L : 輸出代碼中的行號(hào)

         %m : 輸出代碼中指定的消息,產(chǎn)生的日志具體信息

         %n : 換行


    環(huán)境  :  JDK 1.6,Eclipse 3.6,Maven  3.0.4,log4j 1.2.16,mail 1.4.4

    項(xiàng)目結(jié)構(gòu) :



     pom.xml 部分清單   

    <!-- log4j -->

    <dependency>

     <groupId>log4j</groupId>

     <artifactId>log4j</artifactId>

     <version>1.2.16</version>

    </dependency>

    <!-- java mail -->

    <dependency>

     <groupId>javax.mail</groupId>

     <artifactId>mail</artifactId>

     <version>1.4.4</version>

    </dependency>
     

     
    注 : 此處配置 pom.xml 是使用 maven 來管理 jar 包,如果你沒有使用 maven,則需手動(dòng)導(dǎo)入相關(guān) jar 包。

     log4j.properties 清單   

    log4j.rootLogger = INFO, logOutput, htmlOutput, console

    # Txt log

    log4j.appender.logOutput = org.apache.log4j.FileAppender

    log4j.appender.logOutput.file =  src/main/resources/log/demoLog.log

    log4j.appender.logOutput.layout = org.apache.log4j.PatternLayout

    log4j.appender.logOutput.layout.conversionPattern =  %n%n%d{yyyy-MM-dd HH:mm:ss}%n%p %c %L%n%m

    # Html log

    log4j.appender.htmlOutput = org.apache.log4j.FileAppender

    log4j.appender.htmlOutput.file = D:/fancydeepin/log/demoLog.html

    log4j.appender.htmlOutput.layout = org.apache.log4j.HTMLLayout

    # Console log

    log4j.appender.console = org.apache.log4j.ConsoleAppender

    log4j.appender.console.target = System.out

    log4j.appender.console.layout = org.apache.log4j.PatternLayout

    log4j.appender.console.layout.conversionPattern =  %d{yyyy-MM-dd HH:mm:ss}%n%p %c   %L%n%m%n

    # Email log

    #log4j.appender.mail = org.apache.log4j.net.SMTPAppender

    #log4j.appender.mail.Threshold = ERROR

    #log4j.appender.mail.BufferSize = 512

    #log4j.appender.mail.SMTPHost = smtp.yeah.net

    #log4j.appender.mail.Subject = Log4J Message

    #log4j.appender.mail.From = fancydeepin@yeah.net

    #log4j.appender.mail.To = fancydeepin@yeah.net

    #log4j.appender.mail.SMTPAuth = true

    #log4j.appender.mail.SMTPUsername = username

    #log4j.appender.mail.SMTPPassword = password

    #log4j.appender.mail.Encoding = GBK

    #log4j.appender.mail.layout = org.apache.log4j.PatternLayout

    #log4j.appender.mail.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss}%n%p %c %L%n%m

     

     

     測(cè)試代碼   

    package test;

    import java.util.Random;

    import org.apache.log4j.Logger;

    public class TestApp {

       private static Logger log = Logger.getLogger(TestApp.class);


      
    public static void main(String[] args){

          try {

             Random randomException = new Random();

             Object result = 10 / randomException.nextInt(2);

             log.info("Method execute successfully.\nThe result is " + result);

          } catch (Exception e) {

             log.error(e);

          }

       }

    }

     

     demoLog.log 部分信息   

    2012-10-10 12:39:11

    ERROR test.TestApp 17

    java.lang.ArithmeticException: / by zero

     

    2012-10-10 12:39:13

    INFO test.TestApp 15

    Method execute successfully.

    The result is 10

     

    2012-10-10 12:39:15

    ERROR test.TestApp 17

    java.lang.ArithmeticException: / by zero


    注 : 如果在 log4j.properties 中配置了日志信息發(fā)送到郵箱,即將上面的 log4j.properties 配置中的 # Email log 下面的注釋 ( properties 文件中 ' # ' 是行注釋  )

    全部取消的話,則需要在配置中添加一個(gè)輸出源,同樣的,這個(gè)輸出源的名稱是自定義的,在這里,如果我去掉注釋,則需要多配一個(gè)名稱叫 mail 的輸出源,除此之外,

    還需要添加 java 的 mail 的 jar 包,否則,后臺(tái)將拋出 java.lang.ClassNotFoundException 的異常信息。



      
    posted on 2012-10-11 20:12 fancydeepin 閱讀(5478) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 女人体1963午夜免费视频| 在线观着免费观看国产黄| 亚洲日韩精品一区二区三区| 青娱乐在线视频免费观看| 国产片免费在线观看| 日本在线观看免费高清| 亚洲国产成人久久一区WWW| 一级人做人a爰免费视频| 国产成人亚洲综合| 国产三级在线免费| 久久亚洲国产成人精品性色| 91精品导航在线网址免费| 亚洲导航深夜福利| 免费无码又爽又刺激毛片| 免费人成网站永久| 亚洲精品无码Av人在线观看国产| 在线观看特色大片免费网站| 日韩精品一区二区亚洲AV观看| 久久经典免费视频| 毛片亚洲AV无码精品国产午夜| 亚洲中文无韩国r级电影 | 伊人久久综在合线亚洲91| 国产精品1024在线永久免费 | 亚洲黄片手机免费观看| 99精品免费视品| 亚洲人成在久久综合网站| 日韩中文字幕免费| 两个人的视频www免费| 亚洲国产美女福利直播秀一区二区| 成年女人免费v片| 中文字幕免费在线视频| 亚洲国产成人精品电影| 亚洲精品成a人在线观看| 久久国产免费一区| 色偷偷亚洲男人天堂| 久久亚洲一区二区| 永久免费看bbb| 久久国产精品成人片免费| 久久人午夜亚洲精品无码区| 亚洲国产精品久久久久网站| 午夜爱爱免费视频|