spring+maven+ロゴ4 j 2配置

18903 ワード

ロゴ4 j 2とは
ロゴ4 jはApacheが提供するログであり、Javaに基づくログ記録ツールであり、ロゴ4 j 1とロゴ4 j 2のバージョンがあります。ロゴ4 j 2は、ロゴ4 jのアップグレードバージョンです。log 4 j 2はlog 4 j 1.2、sf 4 j、commons login、java.util.login APIをサポートしています。ここでは、log 4 j 2+sf 4 jを用いて構成される。sf 4 jは本当のログではなく、抽象層であり、同じインターフェースに相当しています。バックグラウンドで任意のログライブラリを使用することができます。私たちはsf 4 jで提供されたインターフェースを使ってログ記録のプログラミングを行います。具体的なログを交換して実現する必要がある時、ログコードを変更しなくてもいいです。JArパッケージと構成を入れたら、切り替えができます。例えば、logbackからlogback 4 j 2への切り替えは、logback関連のjiarパケットをlog 4 j 2関連のjarパケットに変更すれば良いです。
導入が必要なjarバッグ
mavenプロファイルに以下の依存jarパッケージを追加します。
<dependency>
            <groupId>org.apache.logging.log4jgroupId>
            <artifactId>log4j-coreartifactId>
            <version>2.6.2version>
        dependency>
        <dependency>
            <groupId>org.apache.logging.log4jgroupId>
            <artifactId>log4j-apiartifactId>
            <version>2.6.2version>
        dependency>
        <dependency>     
            <groupId>org.apache.logging.log4jgroupId>
            <artifactId>log4j-slf4j-implartifactId>
            <version>2.6.2version>
        dependency>
        <dependency>
            <groupId>org.slf4jgroupId> 
            <artifactId>log4j-over-slf4jartifactId>
            <version>1.7.12version>
        dependency>
        
        <dependency>
            <groupId>com.lmaxgroupId>
            <artifactId>disruptorartifactId>
            <version>3.3.6version>
        dependency>
xml方式log 4 j設定
ロゴ4 j 2は以下の4つの方法で設定できます。
  • .1つのフォーマットでxmlまたはjsonのプロファイル
  • はプログラミング方式でConfigrationFactory工場とConfigrationを作ることによって
  • を実現します。
  • はプログラミング方式で、appiを介して構成インターフェースにコンポーネントを追加するブロガー方式
  • に露出する。
  • はプログラミングで、ロギング内部クラスの方法
  • を呼び出すことによって、プログラムされている。
    ファイルの優先度と保存場所の設定
    log 4 j 2は、log 2 j 1をサポートする.properties拡張子のファイル構成方式ではありません。log 4 j 2バージョンのプロファイルの拡張はxml、jsonまたはjsnだけです。システム選択設定のファイルの優先度は以下の通りです。
  • classipathの下の名前はlog 4 j 2-test.jsonまたはlog 4 j-test.jsnファイル
  • です。
  • classipathの下にlogl 4 j 2-test.xmlというファイル
  • があります。
  • classipathの下にlog 4 j.jsonまたはlog 4 j.jsnというファイル
  • があります。
  • classipathの下にlog 4 j 2.xmlというファイル
  • があります。
    私たちはデフォルトでロゴ4 j 2.xmlを使って命名します。ローカルテストの場合、まずロゴ4 j 2-test.xmlをclassipathに置くことができますが、正式な環境ではlogl 4 j 2.xmlを使う場合、パッケージ配置の時にlogl 4-test.xmlを包装しないでください。
    まずは一例を見てみます。
    
    
    
    
    <Configuration status="debug" strict="true">
    
        <properties>
            <property name="LOG_HOME">${sys:catalina.home}/logs/property>
        properties>
        <Appenders>
            
            <Console name="Console" target="SYSTEM_OUT">
                
                <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
                
                <PatternLayout pattern="%d{DEFAULT} %c{1} %p [%t] %m%n"/>
            Console>
    
            
                <File name="log" fileName="${LOG_HOME}/log/test.log" append="false">
                     
                    <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
                File> 
    
            
            <RollingFile name="appLog"
                         fileName="${LOG_HOME}info/info.log"
                         filePattern="${LOG_HOME}info/info.log.%d{yyyy-MM-dd-HH}.log.gz"
                         append="true"
            >
                
                <PatternLayout pattern="%d{DEFAULT} | %c{1} | %p | [%t] | %m%n"/>
                <Policies>
                    
                    <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                Policies>
            RollingFile>
    
            <Async name="asyncAppLog">
                <AppenderRef ref="appLog"/>
            Async>
    
            
            
            <RollingFile name="errorLog" fileName="${LOG_HOME}error/error.log"
                         filePattern="${LOG_HOME}error/error.log.%d{yyyy-MM-dd}.log.gz">
                 
                <PatternLayout pattern="%d{DEFAULT} | %c{10} | %p | [%t] | %m%n"/>
                <Policies>
                    
                    
                    <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                Policies>
            RollingFile>
            <Async name="asyncErrorLog">
                <AppenderRef ref="errorLog"/>
            Async>
        Appenders>
    
        
        <Loggers>
        
            <Root level="info">
                <AppenderRef ref="asyncAppLog"/>
            Root>
            <AsyncLogger name="logger.error" level="info" additivity="false">
                <AppenderRef ref="asyncErrorLog"/>
            AsyncLogger>
        Loggers>
    Configuration>
    ロゴ4 jプロファイルの詳細
    logs 4 jプロファイル
  • Configrationノードには2つの属性があります。
  • statusは、ログ4 j自身のログプリントレベルを表しています。TRACEに設定すれば、コンソールからロゴ4 j自身のログ情報が出力されます。
  • monitoIntervalは、設定ファイルの変更を数秒ごとに自動検出し、単位は秒で、最小の時間間隔は5秒であることを示しています。
  • Configrationには二つのサブノードApppendersとロギングersがあります。
  • Apendersノードでは、よくある3つのシードノード:Cosolie、RollingFile、Fileがあります。
  • Consolieノードは、コンソールに出力されるApppenderを定義するために使用される。
  • name:アプリの名前を指定する
  • target:SYSTEM_OUTまたはSYSTEM_ERRは、デフォルトのみ設定されています。SYSTEM_OUT
  • Pattern Layout:出力フォーマットは、デフォルト%m%nを設定しません。
  • Fileノードは、指定された位置に出力されたファイルを定義するためのApplenderを使用する。
  • name:アプリの名前を指定する
  • fileName:出力ログの目的ファイルのフルパスを指定するファイル名
  • Pattern Layout:出力フォーマットは、デフォルトでは設定されていません:%m%n.
  • RollingFileノードは、指定されたサイズを超えて自動的に古いものを削除して新しいものを作成するAppleを定義するために使用される。
  • name:アプリの名前を指定する
  • fileName:出力ログの目的ファイルのフルパスを指定するファイル名
  • Pattern Layout:RollingFileサブノード、出力フォーマット、デフォルトでは%m%nを設定しません。
  • filePattern:新しいログファイルの名前フォーマットを指定します。
  • Policies:スクロールログのポリシーを指定します。いつ新しいログファイルの出力ログを行いますか?
  • TimeBasedTriggeringPolicy:Policiesサブノードは、時間のスクロールポリシーに基づいて、interval属性を使用して、どれぐらいの頻度でスクロールするかを指定します。デフォルトは1 hourです。modulate=trueは時間の調整に使います。例えば今は朝3時です。intervalは4番です。初めて転がるのは朝4時です。次は8 amです。12 amです。7 am
  • ではありません。
  • Size BasedTriggeringPolicy:Policiesサブノードは、指定されたファイルサイズのスクロールポリシーに基づいて、size属性を使用して、各ログファイルのサイズを定義します。
  • DefaultRollowverStrategy:同じフォルダの下に最大いくつのログファイルがあるかを指定するときに、一番古いものを削除し始め、新しいものを作成します。
  • ロギングノードでよく見られるのは、ロトとロガーの2つです。
  • Rootノードはプロジェクトのルートログを指定します。単独でロギングを指定していない場合、ロフトログ出力をデフォルトで使用します。
  • level:ログ出力レベルは全部で8つのレベルがあります。低いレベルから高いレベルまで:ALL-Trace-Debug-Info-Warn-Err-Fat-OFF
  • name:Rootのサブノードは、このログがどのアプリ
  • に出力されるかを指定します。
  • ロギングノードは、パッケージ下のクラスを指定するために異なるログレベルを指定するなど、ログを単独で指定する形式で使用される。
  • level:ログ出力レベルは全部で8つのレベルがあります。低いレベルから高いレベルまで:ALL-Trace-Debug-Info-Warn-Err-Fat-OFF
  • name:このロギングに適用されるクラスまたはクラスを指定するためのパケット経路は、Rootノード
  • から継承される。
  • ApplenderRef:loggerのサブノードは、このログがどのアプリに出力されるかを指定します。指定がないと、デフォルトでRootから継承されます。指定されたアプリとRootのアプリの両方に出力されます。ロガーのadditivity="false"を設定して、カスタマイズしたアプリの中だけで出力します。
  • ログlevelについて
  • は全部で8つのレベルがあります。低いレベルから高いレベルのALL-Trace-Debug-Info-Warn-Err-Fat-OFF
  • までです。
  • ALL:最低レベル、全ログを開くための
  • Trace:追跡です。つまり、プログラムが以下を推進します。あなたはTrace出力を書くことができます。だから、トレイは特に多いはずです。でも大丈夫です。最低ログレベルを設定して、彼に
  • を出力させません。
  • Debug:細粒度情報イベントはデバッグアプリケーションにとって非常に有用な
  • であると指摘しています。
  • Info:メッセージ粗粒度レベルの上突出で、アプリケーションの実行プロセス
  • を強調しました。
  • Warn:出力警告及びwarn以下のレベルのログ
  • Err:出力エラー情報ログ
  • Fatal:深刻なエラーイベントを出力すると、アプリケーションが終了するログ
  • があります。
  • OFF:最高レベルで、すべてのログ記録プログラムをオフにすると、設定されたレベル以上のログが印刷されます。設定レベルのログが高いほど、印刷されたログは少なくなります。
  • PatternLayou形式の設定
    %d{yyyy-MM-dd HH:mm:ss.SSS}
    %t
    %-5level:      ,-5           5   
    
    %l:         、  、   、  
    
    %msg
    %n
    %F          
    
    %L     
    
    %M        
    javaで使用する
    private final static Logger LOGGER = LoggerFactory.getLogger(clazz);
    
    private static final Logger ERROR_LOG = LoggerFactory.getLogger("logger.error");
    
    private static final Logger TEST_LOG = LoggerFactory.getLogger("logger.test");
    LOGGER.info("info  ");
    ERROR_LOG.error("error  ");
    TEST_LOG.error("test  ");