log 4 j(二)——ログ情報の出力をどのように制御しますか?

8199 ワード

一:テスト環境とlog 4 j(一)--なぜlog 4 jを使用するのか.同様に、ここでは再説明しない
 
二:栗を見てから結論を出す
import org.apache.log4j.*;
import test.log4j.bean.Person;
//by godtrue
public class UseLog4j {
    //     
    private static Logger LOGGER = LogManager.getLogger(UseLog4j.class);
    //    
    private static long CYCLE = 102;
    //    ——   
    public static void main(String[]args){
        long startTime = System.currentTimeMillis();
        /**
         *       log4j     
         */

        /**
         *  :            ,Log4J    C    printf              ,      :
         * 1)%t                  
         * 2)%p             , DEBUG,INFO,WARN,ERROR,FATAL
         * 3)%r      layout(  )                 
         * 4)%c          category(  ),          
         * 5)%F              ,      
         * 6)%d                ,     ISO8601,          ,  :%d{yyy MMM dd HH:mm:ss,SSS},    :20017 02 18  22:10:28,921
         * 7)%L              ,        。  :10
         * 8)%l              ,     、     ,         。  :Testlog4.main(TestLog4.java:10)
         * 9)%%     %  
         * 10)%M               
         * 11)%m             
         * 12)%n            ,Windows   “rn”,Unix   “n”
         *
         *
         *           ,             ,     ,      ,        ?log4j       ,             
         *      :               、      、      ,    :
         *                                                          ( %c        ,          )
         *
         * 1)  %-20c                        20                none                 ,        20    
         * 2)  %20c                        20                none                 ,        20    
         * 3)  %.30c                        none            30                     ,        30    
         * 4)  %-20.30c                    20                30                      ,        20   。  ,          30   ,       。
         * 5)  %20.30c                        20                30                      ,        20   。  ,          30   ,       。
         *
         */
        ////String pattern = "[1]%t - [2]%p - [3]%r - [4]%c - [5]%F - [6]%d  - [7]%L - [8]%l - [9]%% - [10]%M  - [11]%m[12]%n"; ////
        String pattern = "[1]%-10p - [2]%10p - [3]%.3p  - [4]%-10.3p - [5]%10.3p 。 %n"; //

        /**
         *  :           ,              (                ):
         * 1)org.apache.log4j.HTMLLayout( HTML      ),
         * 2)org.apache.log4j.PatternLayout(           ,               ),
         * 3)org.apache.log4j.SimpleLayout(               ),
         * 4)org.apache.log4j.TTCCLayout(         、  、      )
         */
        Layout layout = new PatternLayout(pattern);

        /**
         *  :          ,               (                  ):
         * 1)org.apache.log4j.ConsoleAppender(   ),
         * 2)org.apache.log4j.FileAppender(  ),
         * 3)org.apache.log4j.DailyRollingFileAppender(          ),
         * 4)org.apache.log4j.RollingFileAppender(                     ,                ),
         * 5)org.apache.log4j.WriterAppender(                   )
         */
        Appender appender= new ConsoleAppender(layout);

        //         ,     :1:           ,2:          ,3:            
        BasicConfigurator.configure(appender);

        /**
         *        ,       :
         * 1)ALL             。
         * 2)TRACE          。               。   1.2.12[3]。
         * 3)DEBUG             。               。
         * 4)INFO               (  /  )。                  ,       ,        。
         * 5)WARN          API,API   ,    ,               (        )。                  。
         * 6)ERROR                。                  。
         * 7)FATAL                   。                  。
         * 8)OFF        ,        。
         *
         *                 :ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
         */
        for(int i=0;i){
            if(i<100){
                try{
                    LOGGER.info(new Person("godtrue",100/i,'M'));//       
                }catch(Exception e){
                    LOGGER.error(i+"         !");//       
                }finally{
                    LOGGER.warn("           0 100    !");//       
                }
            }else{
                LOGGER.info("     ,     "+i+" !  ,    !");//       
            }
        }
        LOGGER.debug("         :"+(System.currentTimeMillis()-startTime));//         
    }
}

三:結論
1)上記のコードのコメントをすべて削除すると、このコードはかなり簡単であることがわかります.コメントは試験時に追加されたもので、私が覚えたい知識点でもあります.log 4 jフレームワークを使用してログ出力を制御する方法です.
2)上のコードは以下の部分で構成されている
2-1)ログ情報出力フォーマットを制御する——pattern
2-2)ログ情報出力パターンを制御する——layout
2-3)ログ情報出力先を制御する――appender
2-4)ログ情報の出力を制御するLOGGERは、異なるレベルのログ出力方法を呼び出し、構成されたログ出力レベルに基づいてどのような方法が呼び出されるかを制御することができ、これは後述する
3)プロファイルによる制御においても,プログラム自体による制御においても,我々が制御したい基本は2)説明したこれらの部分であり,これらの機能はログフレームワークが提供する最も基本的な機能でもある.