Java民工的鐵皮房

          Consciousness Of Programming - wjywilliam 想飛,總是會飛的......
          posts - 8, comments - 14, trackbacks - 0, articles - 9
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Log4j 各種輸出配置方法運用實例

          Posted on 2008-04-16 12:00 wjywilliam 閱讀(2514) 評論(0)  編輯  收藏 所屬分類: Log4j


           1. 以下是針對指定pakage層輸出到單獨Log文件實例

          在配置文件中按包名或類名來定義Logger
          在程序中按類名取Logger

          定義:
          log4j.rootLogger=debug,stdout
          log4j.logger.com.mypkg=debug,mypkg
          log4j.logger.com.mypkg.db=info,db
          log4j.logger.com.mypkg.mail=debug,mail

          log4j.appender.stdout=org.apache.log4j.ConsoleAppender
          log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
          log4j.appender.stdout.layout.ConversionPattern=%5r [%5p][%c{2}] %m%n

          log4j.appender.mypkg=org.apache.log4j.RollingFileAppender
          log4j.appender.mypkg.File=system.log
          log4j.appender.mypkg.Append=true
          log4j.appender.mypkg.MaxFileSize=1MB
          log4j.appender.mypkg.MaxBackupIndex=1
          log4j.appender.mypkg.layout=org.apache.log4j.PatternLayout
          log4j.appender.mypkg.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n

          log4j.appender.db=org.apache.log4j.FileAppender
          log4j.appender.db.File=db.log
          log4j.appender.db.Append=true
          log4j.appender.db.layout=org.apache.log4j.PatternLayout
          log4j.appender.db.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n

          log4j.appender.mail=org.apache.log4j.FileAppender
          log4j.appender.mail.File=mail.log
          log4j.appender.mail.Append=true
          log4j.appender.mail.layout=org.apache.log4j.PatternLayout
          log4j.appender.mail.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n

          log4j.additivity.com.mypkg=false
          log4j.additivity.com.mypkg.db=false
          log4j.additivity.com.mypkg.mail=false

          使用:
          package com.mypkg;
          public class Class1
          {
              private static Logger logger = Logger.getLogger(Class1.class);

              ...
              if(logger.isDebugEnabled())
                  logger.debug("debug info");
              ...
          }

          package com.mypkg.db;
          public class Class2
          {
              private static Logger logger = Logger.getLogger(Class2.class);

              ...
              if(logger.isDebugEnabled())
                  logger.debug("debug info");
              ...
          }

          package com.mypkg.mail;
          public class Class3
          {
              private static Logger logger = Logger.getLogger(Class3.class);

              ...
              if(logger.isDebugEnabled())
                  logger.debug("debug info");
              ...
          }

          這樣一來:
            com.mypkg.mail下的類(Class3)的日志就會記入mail.log
            com.mypkg.db下的類(Class2)的日志就會記入db.log
            com.mypkg下的類(Class1)及類似com.mypkg.pkg1這樣的未定義相應Logger的包下的類(com.mypkg.pkg1.Class4)的日志就會記入system.log
            com.mypkg以外的類(com.pkg1.Class5)的日志就會記錄到rootLogger,即輸出到控制臺

          不管增加還是刪除日志配置項,都不需要修改程序:
              如果想去掉其中一個,如mail,只需從配置文件中去掉"log4j.logger.com.mypkg.mail=info,mail"這一行,去掉后com.mypkg.mail包下的類(如Class3)的日志就會記入system.log中。
              如果要新增Logger,如com.mypkg.pkg2,只需在配置文件中增加類似配置,com.mypkg.pkg2包下的類的日志就會記入新增的log文件,而不再記入system.log文件。

          2. 以下是針對某個class單獨輸出到Log文件實例

          還可以為指定類配置一個logger,如為類com.mypkg.db.ConnectionPool配置一個logger:
            log4j.logger.com.mypkg.db.ConnectionPool=debug,pool

            log4j.appender.pool=org.apache.log4j.FileAppender
            log4j.appender.pool.File=pool.log
            log4j.appender.pool.Append=true
            log4j.appender.pool.layout=org.apache.log4j.PatternLayout
            log4j.appender.pool.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n

            log4j.additivity.com.mypkg.db.ConnectionPool=false

          這樣一來,ConnectionPool類的日志就會記入pool.log,不會記入db.log

          還可以兩個Logger使用同一個appender:
            log4j.logger.com.pkg1=debug,system
            log4j.logger.com.pkg2=info,system
          這樣的話com.pkg1和com.pkg2下的日志會分別以degug和info級別輸出到system這個appender指定的文件中

          3. 以下是針對指定Log Level單獨輸出到單獨的Log文件實例

            log4j.logger.errorLogger=ERROR, errorLog

            log4j.appender.errorLogger=org.apache.log4j.RollingFileAppender
            log4j.appender.errorLogger.File=/logs/error/errorLog.log
            log4j.appender.errorLogger.MaxFileSize=512KB
            log4j.appender.errorLogger.MaxBackupIndex=3
            log4j.appender.errorLogger.layout=org.apache.log4j.PatternLayout
            log4j.appender.errorLogger.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n

          關鍵在程序里面new log object時候這樣寫:
          慣例:
             Log log = LogFactory.getLog(this.getClass());
          指定輸出的appender(appender制定輸出的Level):
            
          Log log = LogFactory.getLog(errorLog);


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 麻城市| 巧家县| 塔城市| 紫阳县| 方正县| 长阳| 东城区| 合山市| 奉新县| 龙州县| 外汇| 安乡县| 监利县| 襄城县| 会同县| 通山县| 雷州市| 长丰县| 漠河县| 萍乡市| 文水县| 桐庐县| 巴林右旗| 怀仁县| 新竹县| 通渭县| 突泉县| 华蓥市| 珲春市| 南城县| 蓝田县| 武平县| 日喀则市| 南丹县| 石台县| 巫溪县| 阿瓦提县| 兴安县| 屏东市| 阿图什市| 博野县|