polarwind

          2005年10月22日

          關于log4j(一)----使用

                   最近正在做一個項目,其中要使用log4j,把我對它的一些了解和看法在這里寫出來,供大家參考。
                   今天只討論log4j的使用。

          一:配置


          A:)在Web Application 中使用log4j
          Step 1:
          配置log4j配置文件
          =========================
          # Set root logger level to DEBUG and its only appender to A1
          #log4j中有五級logger
          #FATAL0
          #ERROR3
          #WARN4
          #INFO6
          #DEBUG7
          log4j.rootLogger=DEBUG, A1
          # A1 is set to be a ConsoleAppender.
          #log4j中Appender有幾層
          #ConsoleAppender輸出到控制臺
          log4j.appender.A1=org.apache.log4j.ConsoleAppender

          # A1 uses PatternLayout.
          log4j.appender.A1.layout=org.apache.log4j.PatternLayout
          #輸出格式 具體查看log4j javadoc org.apache.log4j.PatternLayout
          #d 時間 ....
          log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

          ================================另外一種配置
          log4j.rootLogger=debug, stdout, R

          log4j.appender.stdout=org.apache.log4j.ConsoleAppender
          log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

          # Pattern to output the caller's file name and line number.
          log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
          #R 輸出到文件
          log4j.appender.R=org.apache.log4j.RollingFileAppender
          log4j.appender.R.File=example.log

          log4j.appender.R.MaxFileSize=100KB
          # Keep one backup file
          log4j.appender.R.MaxBackupIndex=1

          log4j.appender.R.layout=org.apache.log4j.PatternLayout
          log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

          Step 2:寫啟動的Servlet

          public class InitServlet extends HttpServlet {

          public void init() {
          ServletContext sct = getServletContext();
          String prefix = sct.getRealPath("/");
          //log4j 配置文件存放目錄
          System.out.println("[....Log4j]: The Root Path: " + prefix);
          System.out.println("[....Log4j]: InitServlet init start...");
          String file = getInitParameter("log4j");
          //log4j 配置文件
          if (file != null) {
          PropertyConfigurator.configure(prefix + file);
          //根據配置初始化log4j
          }

          System.out.println("[....Log4j]: InitServlet Init Sucess...");

          }

          public void doGet(HttpServletRequest req, HttpServletResponse res) {

          }

          public void doPost(HttpServletRequest req, HttpServletResponse res) {

          }
          }

          B:在一般的IDE中使用log4j,因為使用log4j需要做一些初始化,在Web Application
          中這一部分初始化是有AppServer 啟動是加載的。在IDE中,則我們在使用log4j
          之前需要自己配置一下。
          如下文件:
          public final class Lo4jTest {
          private static String CLASS_NAME = "com.bingo.test.Lo4jTest";
          private static Logger log = Logger.getLogger(CLASS_NAME);
          //在Web Application 中下面的pattern是在log4j的配置文件中配置的。
          //現在我們手動配置
          private static String pattern="%-4r [%-t] [%p] [%c] [%x] - [%m]%n";
          private static String pattern2="%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n";
          //設置輸出層
          //
          private static ConsoleAppender consAppender =
          new ConsoleAppender(
          new PatternLayout(pattern2));
          public static void main(String[] args) {
          //配置log4j
          BasicConfigurator.configure(consAppender);
          // void configure(Appender appender);
          // void configure();
          //配置時log4j提供了兩種方式
          //后一種比較簡單,輸出的信息不夠詳細
          //我們可以使用前一種輸出我們希望的格式
          log.debug("Log4j Debug.");
          log.error("Log4j Error.");
          log.info("Log4j Info.");
          log.fatal("Log4j Fatal.");
          }
          }
          //使用pattern2上面的輸出結果如下
          2002-08-30 13:49:09 [com.bingo.test.Lo4jTest]-[DEBUG] Log4j Debug.
          2002-08-30 13:49:09 [com.bingo.test.Lo4jTest]-[ERROR] Log4j Error.
          2002-08-30 13:49:09 [com.bingo.test.Lo4jTest]-[INFO] Log4j Info.
          2002-08-30 13:49:09 [com.bingo.test.Lo4jTest]-[FATAL] Log4j Fatal.
          //假如我們使用pattern輸出如下:
          0 [main] [DEBUG] [com.bingo.test.Lo4jTest] [] - [Log4j Debug.]
          0 [main] [ERROR] [com.bingo.test.Lo4jTest] [] - [Log4j Error.]
          0 [main] [INFO] [com.bingo.test.Lo4jTest] [] - [Log4j Info.]
          0 [main] [FATAL] [com.bingo.test.Lo4jTest] [] - [Log4j Fatal.]


          二:使用log4j
          在實際使用過程中其實非常簡單

          1:)如下定義log

          private static String CLASS_NAME = "com.bingo.test.Lo4jTest";
          //log4j1.2
          private static Logger log = Logger.getLogger(CLASS_NAME);

          2:)寫日志

          log.debug("Log4j Debug.");
          log.error("Log4j Error.");
          log.info("Log4j Info.");
          log.fatal("Log4j Fatal.");
          //void debug(Object message)
            //Log a message object with the DEBUG level.
            //void debug(Object message, Throwable t)
            //Log a message object with the DEBUG level including the
            //stack trace of the Throwable t passed as parameter.

          三:注意事項


          1:在具體使用中注意不同的信息使用不同的log方式,選擇debug,error,
          info,fatal中的一種,以后可以根據需要屏蔽部分輸出
          2:開發過程中盡量輸出到控制臺,運行過程中則修改配置使其輸出到文件.
          3:定義log盡量使用文件名作為參數,這樣容易查找錯誤.

          posted @ 2005-10-22 13:03 太陽風 閱讀(286) | 評論 (0)編輯 收藏

          2005年10月19日

          開卷明宗

          很多同學都在做技術,這里就是方便大家的一個地方。平時談談大家的對技術的看法和感受;談談可能遇到問題的技術細節;談談項目反思,等等。希望能能互惠大家。

          posted @ 2005-10-19 19:40 太陽風 閱讀(361) | 評論 (1)編輯 收藏

          僅列出標題  
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統計

          常用鏈接

          留言簿(1)

          我參與的團隊

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 张家界市| 长汀县| 邯郸市| 互助| 延川县| 兴城市| 历史| 宣城市| 余干县| 改则县| 靖边县| 那坡县| 康保县| 泾川县| 鄂州市| 屯留县| 深州市| 荥经县| 耿马| 石台县| 阳山县| 和硕县| 古田县| 驻马店市| 九龙城区| 锡林浩特市| 呼和浩特市| 鲁山县| 随州市| 岑巩县| 田林县| 筠连县| 彝良县| 西宁市| 西吉县| 江油市| 潞西市| 南靖县| 惠水县| 辰溪县| 大新县|