Log 4 jの高度な構成


ほとんどのJavaプロジェクト記録ログはLog 4 jを使用しており、簡単な構成ではネット上で詳細なチュートリアルがあります.プロジェクトが複雑になり、例えば多くのモジュール、多くの階層、多くの通信方式に分かれている場合、異なるモジュールまたは異なる階層または異なる通信方式のログを異なるファイル出力に記録する必要があります.ここでは、上記の要件を満たすためにLog 4 jを構成する方法について説明します.
      ログ4 j日記記録プロセスは、ログソースとログの出力先との関係に分解することができる.ログのソースはログ出力とは完全に独立しており、複数対多の関係であってもよい.簡単に言えば、コード内の1つのログは複数の出力先(コンソール、all.logファイル、A 1.logファイルなど)に出力でき、逆に1つの出力先は複数の場所からのログを受け入れることができる.Javaの中のコードはすべてpackageとclassの下にあるので、ソースはpackageあるいはclassを通じて位置決めして、どこから来たのかを確定することができます.その後、ログソースを記録したい出力先に記録すればよい.例を挙げると、プロジェクトに参加する永続化層はiBatisオープンソースプロジェクトを使用し、iBatisもLog 4 jでその操作ログを記録します.iBatisが出力したログをiBatis.logファイルに記録したいので、プロジェクトのコードと混同しないでください.また、エラーが記録されていないのではなく、エラーが記録されていないerror.logファイルが必要です.以上の2つの例を観察すると,ログソースと出力の個性化が強調されているが,後者のソースはすべてである.次に、ログ4 jプロファイルを先にアップします.
### set root log ###
log4j.rootLogger = INFO , CONSOLE, ALL, ERROR


### console log ###
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target = System.out
log4j.appender.CONSOLE.Threshold = INFO
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %t  %d{yyyy-MM-dd HH:mm:ss,SSS}  %l  %M  %5p  %m%n


### all information log ###
log4j.appender.ALL = org.apache.log4j.DailyRollingFileAppender
log4j.appender.ALL.File = logs/all.log
log4j.appender.ALL.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.ALL.Threshold = INFO
log4j.appender.ALL.layout = org.apache.log4j.PatternLayout
log4j.appender.ALL.layout.ConversionPattern = %t  %d{yyyy-MM-dd HH:mm:ss,SSS}  %l  %M  %5p  %m%n

### error log ###
log4j.appender.ERROR = org.apache.log4j.DailyRollingFileAppender
log4j.appender.ERROR.File = logs/error.log
log4j.appender.ERROR.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.ERROR.Threshold = ERROR
log4j.appender.ERROR.layout = org.apache.log4j.PatternLayout
log4j.appender.ERROR.layout.ConversionPattern = %t  %d{yyyy-MM-dd HH:mm:ss,SSS}  %l  %M  %5p  %m%n


### iBatis log ###
log4j.appender.IBATIS = org.apache.log4j.DailyRollingFileAppender
log4j.appender.IBATIS.File = logs/ibatis.log
log4j.appender.IBATIS.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.IBATIS.Threshold = DEBUG
log4j.appender.IBATIS.layout = org.apache.log4j.PatternLayout
log4j.appender.IBATIS.layout.ConversionPattern = %t  %d{yyyy-MM-dd HH:mm:ss,SSS} %5p  %m%n

log4j.logger.com.ibatis = DEBUG , CONSOLE , ALL, ERROR, IBATIS
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner = DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG
log4j.logger.java.sql.Connection = DEBUG
log4j.logger.java.sql.Statement = DEBUG
log4j.logger.java.sql.PreparedStatement = DEBUG, CONSOLE , ALL, IBATIS

    ログのソースと出力は、ログ・レベルを設定できます.iBatisを例にとると、 log 4 j.logger.com.ibatis=DEBUG ibatisパッケージレベル以下のログソースログレベルをDUBUGと指定することで、SQL情報が表示されます.さらにerrorログの構成を見て、log 4 j.appender.ERROR.Threshold=ERROR出力のログレベルがERRORであることを指定します.この出力先はエラー情報のみを記録します.1本の水道管の2つの蛇口のように、出水の多少は流量の小さい蛇口によって決まります.ログ4 jに記録されているログは、レベルの高いものによって決まります.上にはall.log出力もあり、すべてのログを1つの場所で完全に見つけることができます.
   
    以上の方法でログポリシーを柔軟にカスタマイズでき、プロジェクトのログはiBatisの構成方法を参照して構成すればよい.後で注意しなければならないのは、開発環境のために環境を生成するために異なるログポリシーを構成することが望ましいことです.出力レベルも出力先も異なる場合があります!生産環境と開発環境に対応する2つのLog 4 jファイル、log 4 j-pro.propertiesとlog 4 j-dev.propertiesがあるはずです.