slf 4 jとLogbackに関するログ管理の紹介

14345 ワード

Logbackはlog 4 jの創始者によって設計されたもう一つのオープンソースログコンポーネントである.logbackは現在、logback-core、logback-classic、logback-accessの3つのモジュールに分かれています.logback-coreは他の2つのモジュールの基礎モジュールです.logback-classicはlog 4 jの改良バージョンである.さらにlogback-classicはSLF 4 J APIを完全に実現し、log 4 jやJDK 14 Loggingなどの他のログシステムに簡単に交換することができます.logback-accessアクセスモジュールとサーブレットコンテナの統合は、Httpを介してログにアクセスする機能を提供します.LogbackはSLF 4 Jと結合して2つのコンポーネントを使用する公式サイトです.logbackの公式サイトは以下の通りです.http://logback.qos.chSLF 4 Jの公式サイト:http://www.slf4j.orgこの文書で用いるコンポーネントは、logback-access-1.0.0である.jar logback-classic-1.0.0.jar logback-core-1.0.0.jar slf4j-api-1.6.0.JArはMavenを使用する場合、次のように依存します.
<dependency>                                        <groupId>ch.qos.logbackgroupId>
<artifactId>logback-classicartifactId>
<version>1.1.6version>
dependency>

logbackの利点:1、Logbackのカーネル書き換えをより迅速に実現し、いくつかの重要な実行パスで性能を10倍以上向上させる.またlogbackはパフォーマンスが向上しただけでなく、初期化メモリのロードも小さくなりました.2、非常に十分なテストLogbackは数年を経て、数え切れないほどのテストをしました.Logbackのテストはまったく異なるレベルです.3、Logback-classicは非常に自然にSLF 4 j Logback-classcを実現してSLF 4 jを実現した.SLF 4 jを使用すると、logback-classicは感じられません.またlogback-classicは非常に自然にSLF 4 Jを実現しているので、log 4 jや他のログフレームワークに切り替えるのは非常に容易で、別のjarパッケージを提供するだけでOKで、SLF 4 JAPIで実現されるコードを動かす必要はありません.4、非常に十分なドキュメント公式サイトには200ページ以上のドキュメントがあります.5、プロファイルを自動的に再ロードプロファイルが変更された場合、Logback-classicはプロファイルを自動的に再ロードすることができる.スキャンプロセスは高速で安全であり、スキャンスレッドを別途作成する必要はありません.この技術は、JEE環境でアプリケーションが喜ぶことを十分に保証しています.6、Lilith Lilithはlogイベントの観察者であり、log 4 jのchainsawと類似している.lilithは大量のlogデータを処理することもできます.7、慎重なモードと非常に友好的なリカバリ慎重なモードでは、複数のFileAppenderインスタンスが複数のJVMの下を走り、同じログファイルを安全に書き込むことができます.RollingFileAppenderには制限があります.LogbackのFileAppenderとそのサブクラスにはRollingFileAppenderが含まれており、I/O異常から非常に友好的にリカバリできます.8、コンフィギュレーションファイルは異なる状況を処理することができ、開発者は常に異なるLogbackコンフィギュレーションファイルが異なる環境下(開発、テスト、生産)にあると判断する必要がある.これらのプロファイルはわずかな違いしかなく、1つのプロファイルが複数の環境に適応できるように、和で実現することができます.9、Filters(フィルタ)では、問題を診断し、ログを打つ必要がある場合があります.log 4 jでは、ログレベルを下げるしかありませんが、これにより大量のログが作成され、アプリケーションのパフォーマンスに影響します.Logbackでは、aliceというユーザーがログインすると、彼女のログはDEBUGレベルに打たれ、他のユーザーはWARNレベルに打つことができます.この機能を実現するには、XML構成を4行追加するだけです.MDCFIlterを参照してください.10、SiftingAppender(非常に多機能なAppender)ログファイルを任意の所定の実行パラメータに基づいて分割するために使用できます.たとえば、SiftingAppenderは、ログ・イベントがユーザーのセッションにフォローされることを区別し、各ユーザーにログ・ファイルを1つ持つことができます.11、自動圧縮されたlog RollingFileAppenderは、新しいファイルが作成されると、すでに作成されたログファイルを自動的に圧縮します.圧縮は非同期のプロセスであるため、大きなログファイルでも圧縮中に適用されても影響を受けません.12、スタックツリーにパッケージバージョンがあるLogbackスタックツリーログを出すと、パッケージのデータが付きます.13.古いログ・ファイルを自動的に削除するTimeBasedRollingPolicyまたはSizeAndTimeBasedFNATPのmaxHistoryプロパティを設定することで、ログ・ファイルが生成された最大数を制御できます.maxHistory 12を設定すると、12ヶ月以上のlogファイルが自動的に削除されます.
Logbackの構成紹介1、Logger、appenderおよびlayout Loggerをログのレコーダとして、それをアプリケーションの対応するcontextに関連付けた後、主にログオブジェクトを格納するために用いられ、ログタイプ、レベルを定義することもできる.Appenderは主にログ出力の宛先を指定するために使用されます.宛先はコンソール、ファイル、リモートソケットサーバ、MySQL、PostreSQL、Oracleおよびその他のデータベース、JMSおよびリモートUNIX Syslogデーモンなどです.Layoutはイベントを文字列に変換し、フォーマットされたログ情報の出力を担当します.2、logger context各loggerは1つのLogger Contextに関連付けられ、Logger Contextはloggerの製造を担当し、ツリー構造で各loggerを並べることも担当する.他のすべてのloggerもorg.を通過する.slf4j.LoggerFactoryクラスの静的メソッドgetLogger取得.getLoggerメソッドはlogger名をパラメータとする.同じ名前でロガーファクトリーを呼び出すgetLoggerメソッドで得られるのは、常に同じloggerオブジェクトの参照です.3、有効レベル及びレベルの継承Loggerは、レベルを割り当てることができる.レベルはTRACE、DEBUG、INFO、WARN、ERRORを含む、ch.qosに定義される.logback.classic.Levelクラス.loggerが割り当てられていない場合、割り当てられたレベルを持つ最近の祖先からレベルが継承されます.root loggerのデフォルトレベルはDEBUGです.4、印刷方法と基本的な選択規則印刷方法は記録要求のレベルを決定する.たとえば、Lがloggerインスタンスの場合、文L.info(".")はINFOレベルのレコード文です.レコードリクエストのレベルは、そのloggerの有効レベル以上の場合に有効と呼ばれ、そうでない場合は無効と呼ばれます.レコード要求レベルはpであり、そのloggerの有効レベルはqであり、p>=qの場合にのみ、その要求が実行される.このルールはlogbackのコアです.ランク付けは、TRACELogbackのデフォルト設定プロファイルlogback-test.xmlとlogback.xmlが存在しない場合、logbackはデフォルトでBasicConfiguratorを呼び出し、最小化構成を作成します.最小化構成は、ルートloggerに関連付けられたConsoleAppenderで構成されます.出力は%d{HH:mm:ss.SSS}[%thread]%-5 level%logger{36}-%msg%nのPatternLayoutEncoderでフォーマットします.root loggerのデフォルトレベルはDEBUGです.1、LogbackのプロファイルLogbackプロファイルの構文は非常に柔軟である.柔軟だからこそDTDやXML schemaでは定義できません.それでも、プロファイルの基本構造は、先頭に0つ以上の要素があり、0つ以上の要素があり、最大1つの要素があります.2.Logbackのデフォルト構成の手順(1).classpathでファイルlogback-testを検索してみます.xml; (2). ファイルが存在しない場合は、ファイルlogbackを検索します.xml; (3). 両方のファイルが存在しない場合、logbackはBasicConfiguratorで自動的に自分を構成し、記録がコンソールに出力されます.3、Logback.xmlファイル

<configuration debug="false">
    
    <property name="LOG_HOME" value="/home" />  
       
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
              
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>   
        encoder>
    appender>
       
    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">   
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            
            <FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.logFileNamePattern> 
            
            <MaxHistory>30MaxHistory>
        rollingPolicy>   
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
            
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>   
        encoder> 
        
       <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
         <MaxFileSize>10MBMaxFileSize>
       triggeringPolicy>
    appender> 
    
    <logger name="org.hibernate.type.descriptor.sql.BasicBinder"  level="TRACE" />  
    <logger name="org.hibernate.type.descriptor.sql.BasicExtractor"  level="DEBUG" />  
    <logger name="org.hibernate.SQL" level="DEBUG" />  
    <logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />
    <logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />  

     
    <logger name="com.apache.ibatis" level="TRACE"/>
    <logger name="java.sql.Connection" level="DEBUG"/>
    <logger name="java.sql.Statement" level="DEBUG"/>
    <logger name="java.sql.PreparedStatement" level="DEBUG"/>

    
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    root> 
       
    <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
         
        <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
            
           <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
              <driverClass>com.mysql.jdbc.DriverdriverClass>
              <url>jdbc:mysql://127.0.0.1:3306/databaseNameurl>
              <user>rootuser>
              <password>rootpassword>
            dataSource>
        connectionSource>
  appender>
configuration>