【回転】log 4 j構成

17699 ワード

一、前言:
     log 4 jはオープンソースプロジェクトであり、Javaで記述されたログ記録パッケージとして広く使用されている.log 4 jの優れた表現により、     当時log 4 jが完了したとき、log 4 j開発組織はsunがjdk 1.4のログツールクラスの代わりにjdk 1.4でlog 4 jを使用することを提案したが、当時jdk 1.4は完了に近づいていたため、sunはlog 4 jの使用を拒否し、java開発で実際に最も多く使用されたのはlog 4 jであった.     人々はsunのログツールクラスを忘れた.     その独自の特性には、カテゴリで継承された概念が含まれています.カテゴリ階層を使用することで、ログの出力量を削減し、ログのオーバーヘッドを最小限に抑えることができます.
 
     開発者は、どのログ文を任意の間隔で出力するかを制御できます.外部プロファイルを使用することで、実行時に完全に構成できます.ほとんどの大規模なアプリケーションには、独自のログ記録または追跡APIが含まれています.経験により、ログ記録は開発サイクルの重要な構成部分であることが明らかになった.同様に、ログ・レコードにはいくつかの利点があります.まず、アプリケーションを実行する正確なコンテキストを提供します.コードに挿入されると、ログ記録出力を生成するには、人為的な干渉は必要ありません.次に、ログ出力は、後で検討するために永続的なメディアに保存することができる.最後に、開発フェーズで使用するだけでなく、豊富なログ・パケットを監査ツールとして使用することもできます.
    このルールに従って、1996年初め、EU SEMPER(欧州安全電子市場)プロジェクトは独自の追跡APIを作成することを決定した.数回の改善、数回の具体化、および多くの作業の後、このAPIはlog 4 jに進化し、流行のJavaログ記録パケットである.  このパッケージはIBMの公共ライセンスで配布され、オープンソース権威機関によって認証されています.
    ログには独自の欠点があります.アプリケーションの速度が低下します.詳細すぎると、画面がスクロールして見えなくなる可能性があります.  これらの影響を低減するためにlog 4 jは高速で柔軟に設計されている.アプリケーションはログ記録を主な機能とすることは少ないため、  log 4 j APIは、分かりやすく使用できるように努力しています.
     log 4 jは、どのログ文を任意の間隔で出力するかを制御することができる.
二、主要コンポーネント
1.ルートカテゴリ(カテゴリ階層の上部、つまりグローバルなログ・レベル)
ルートLoggerを構成します.構文は次のとおりです.
log4j.rootLogger = [ level ] , appenderName, appenderName, ...
levelはログレコードのカテゴリです
appenderNameは、ログ情報がどこに出力されるかを指定します.複数の出力先を同時に指定できます.
カテゴリレベルは、OFF、FATAL、ERROR、WARN、INFO、DEBUG、log、ALLまたはカスタムの優先度です.
og 4 j共通の優先度FATAL>ERROR>WARN>INFO>DEBUG
ルートLoggerを構成します.構文は次のとおりです.
log4j.rootLogger = [ level ] , appenderName, appenderName, …
log 4 j.rootLogger=WARNの場合、WARN、ERROR、FATALのみが出力され、DEBUG、INFOが遮断されることを意味します.
例:log 4 j.rootLogger=INFO,stdout,Runlog,Errorlog
ルートログカテゴリはINFOであり、DEBUGはブロックされ、その他は出力されます.stdout,Runlog,Errorlogはそれぞれ3つの出力先である.
2、常用出力フォーマット
-X番号:X情報出力時に左揃え;
%p:ログ情報レベル
%d{}:ログ情報生成時間
%c:ログ情報の所在地(クラス名)
%m:生成されたログの詳細
%n:ログ情報の改行を出力
例:

log4j.appender.stdout.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n
log4j.appender.Runlog.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n
log4j.appender.Errorlog.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n

3、レイアウト
log 4 jは4つのレイアウトを提供する出力レイアウトを使用します.
org.apache.log 4 j.HTML Layout(HTMLテーブル形式でレイアウト)
org.apache.log 4 j.PatternLayout(レイアウトモードを柔軟に指定できます)、
org.apache.log 4 j.SimpleLayout(ログ情報のレベルと情報文字列を含む)
org.apache.log 4 j.TTCCLayout(ログ生成時間、スレッド、カテゴリなどの情報を含む)
例:
出力形式はHTMLテーブル
log4j.appender.stdout.layout=org.apache.log4j.HTMLLayout
レイアウトモードを柔軟に指定できる出力フォーマット
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
出力フォーマットは、ログ情報を含むレベルと情報文字列です.
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
出力フォーマットは、ログ生成時間、スレッド、カテゴリなどの情報を含む
log4j.appender.stdout.layout=org.apache.log4j.TTCCLayout
4、目的地
ログ情報出力先Appenderを構成します.構文は
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
...
log4j.appender.appenderName.option = valueN
appenderNameは、ログ情報がどこに出力されるかを指定します.複数の出力先を同時に指定できます.
log 4 jがサポートする出力先:
org.apache.log 4 j.consoleAppenderコンソール
org.apache.log 4 j.FileAppenderファイル
org.apache.log 4 j.DailyRollingFileAppenderは毎日1つのログファイルを生成します
org.apache.log 4 j.RollingFileAppender(ファイルサイズが指定サイズに達したときに新しいファイルが生成されます)
org.apache.log 4 j.WriterAppender(任意の指定された場所にログ情報をストリーム形式で送信)
org.apache.log 4 j.net.SMTPAppenderメール
org.apache.log 4 j.jdbc.JDBCAppenderデータベース
その他、GUIコンポーネント、さらにはソケットサーバ、NTのイベントレコーダ、UNIX Syslogデーモンなど
例:
コンソールに出力

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender(        )
log4j.appender.Threshold=DEBUG(      )
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout(      )
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(      )

ファイルに出力

   log4j.appender.FILE=org.apache.log4j.FileAppender(       )
   log4j.appender.FILE.File=file.log(           )
   log4j.appender.FILE.Append=false
   log4j.appender.FILE.layout=org.apache.log4j.PatternLayout(       )
   log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(       )

     (  "    ",            ,          ,            )

  log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender(       )
  log4j.appender.ROLLING_FILE.Threshold=ERROR(      )
  log4j.appender.ROLLING_FILE.File=rolling.log(           )
  log4j.appender.ROLLING_FILE.Append=true
  log4j.appender.ROLLING_FILE.MaxFileSize=10KB(          )
  log4j.appender.ROLLING_FILE.MaxBackupIndex=1
  log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout(        )
  log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(        )

Socketに出力

 log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender(     Socket)
 log4j.appender.SOCKET.RemoteHost=localhost(    )
 log4j.appender.SOCKET.Port=5001(      )
 log4j.appender.SOCKET.LocationInfo=true
 log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout(  )
 log4j.appender.SOCET.layout.ConversionPattern =[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n %m[MESSAGE]%n%n(    )

メールに出力

log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender(       )
 log4j.appender.MAIL.Threshold=FATAL
 log4j.appender.MAIL.BufferSize=10
 [email protected](   )
 log4j.appender.MAIL.SMTPHost=mail.hollycrm.com(SMTP   )
 log4j.appender.MAIL.Subject=Log4J Message
 [email protected](   )
 log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout(  )
 log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(  )

データベースに出力

 log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender(        )
 log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test(     URL)
 log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver(     driver)
 log4j.appender.DATABASE.user=root(       )
 log4j.appender.DATABASE.password=root(         )
 log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')(  SQL  )
 log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout(  )
 log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(  )

5、ログカテゴリ補充
ルート・カテゴリとは異なるログ・カテゴリを特定のセクションに指定する必要がある場合があります.パケットの優先度を指定します.たとえば、パケットを出力するログ・レベルを個別に指定します.
  log 4 j.category.com.neusoft.mbip.dm.util=ERROR、com.neusoft.mbip.dm.utilはログカテゴリを特に指定する必要がある部分です.
  または、出力ファイルの優先度を指定できます.
  log4j.appender.Errorlog.Threshold=ERROR
三、常用log 4 j配置
一般的にlog 4 j構成では、.propertiesと.xmlの2つの方法が使用できます.以下に2つの簡単な例を挙げます.
1、log4j.properties
###org.zblogドメイン対応レベルINFO,DEBUG,WARN,ERRORおよび出力地A 1,A 2を設定
log4j.category.org.zblog=ERROR,A1
log4j.category.org.zblog=INFO,A2
log4j.appender.A1=org.apache.log4j.ConsoleAppender
###出力先A 1を設定し、ConsoleAppender(コンソール)##
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
###A 1の出力レイアウトフォーマットPatterLayoutを設定します.(レイアウトモードを柔軟に指定できます)##
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
###ログ出力のフォーマットを設定###
log4j.appender.A2=org.apache.log4j.RollingFileAppender
###出力先A 2をファイルに設定する(ファイルサイズが指定サイズに達したときに新しいファイルが生成する)###
log4j.appender.A2.File=E:/study/log4j/zhuwei.html
###ファイルの場所###
log4j.appender.A2.MaxFileSize=500KB
###ファイルサイズ##
log4j.appender.A2.MaxBackupIndex=1
log4j.appender.A2.layout=org.apache.log4j.HTMLLayout
##html方式での出力指定
2、log4j.xml

<?xml version="1.0" encoding="GB2312" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<appender name="org.zblog.all" class="org.apache.log4j.RollingFileAppender">
<!--     ID:org.zblog.all     :org.apache.log4j.RollingFileAppender -->
    <param name="File" value="E:/study/log4j/all.output.log" /><!--   File  :        -->
    <param name="Append" value="false" /><!--             ,              -->
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%p (%c:%L)- %m%n" /><!--             -->
    </layout>
</appender>

<appender name="org.zblog.zcw" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="E:/study/log4j/zhuwei.output.log" />
    <param name="Append" value="true" />
    <param name="MaxFileSize" value="10240" /> <!--        -->
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
    </layout>
</appender>

<logger name="zcw.log"> <!--       , zcw.log                    -->
    <level value="debug" /><!--      -->
    <appender-ref ref="org.zblog.zcw" /><!--       id    -->
</logger>

<root> <!--             -->
    <appender-ref ref="org.zblog.all" /><!--       id    -->
</root>

</log4j:configuration>

3、プロファイルのロード方法:

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.DOMConfigurator;

public class Log4jApp {
    public static void main(String[] args) {
        DOMConfigurator.configure("E:/study/log4j/log4j.xml");//  .xml  
        //PropertyConfigurator.configure("E:/study/log4j/log4j.properties");//  .properties  

        Logger log=Logger.getLogger("org.zblog.test");
        log.info("  ");
    }
}

4、プロジェクト使用log 4 j
Webアプリケーションでは、プロファイルのロードを個別のservletに配置し、Web.xmlでアプリケーションの起動時にロードするように構成できます.
複数のプロジェクトでは、一人一人に出力チャネルを設定できます.これにより、一人一人がLoggerを構築するときに、自分のドメイン名でデバッグメッセージを作成できます.
息は自分のlogファイルに出力されます.
四、log 4 j構成例(properties)

#log4j.rootLogger = [ level ] , appenderName, appenderName,
#  level   OFF、FATAL、ERROR、WARN、INFO、DEBUG、log、ALL        
#Log4j      FATAL>ERROR>WARN>INFO>DEBUG

#stdout     ,Errorlog        ,
log4j.rootCategory=INFO,stdout,Runlog,Errorlog


#   appender    
#log4j.appender.appenderName = fully.qualified.name.of.appender.class
#log4j.appender.appenderName.option1 = value1
#log4j.appender.appenderName.option = valueN
#Log4j appender     
#org.apache.log4j.ConsoleAppender    
#org.apache.log4j.FileAppender   
#org.apache.log4j.DailyRollingFileAppender           
#org.apache.log4j.RollingFileAppender (                     ),
#org.apache.log4j.WriterAppender (                   )
#org.apache.log4j.net.SMTPAppender   
#org.apache.log4j.jdbc.JDBCAppender    

#       
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.Runlog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Errorlog=org.apache.log4j.DailyRollingFileAppender


#            
log4j.appender.Errorlog.Threshold=ERROR

#       
log4j.appender.Runlog.File=D:\\UserInfoSyn\\WebRoot\\WEB-INF\\runlog\\runlog.log
log4j.appender.Errorlog.File=D:\\UserInfoSyn\\WebRoot\\WEB-INF\\errorlog\\errorlog.log


#Log4j layout  
#org.apache.log4j.HTMLLayout  HTML      
#org.apache.log4j.PatternLayout            
#org.apache.log4j.SimpleLayout                 
#org.apache.log4j.TTCCLayout             、  、      

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.Runlog.layout=org.apache.log4j.PatternLayout
log4j.appender.Errorlog.layout=org.apache.log4j.PatternLayout

#    ,log4j javadoc org.apache.log4j.PatternLayout
#-X :X        ;
#%p:      
# %d{}:        
# %c:       (  )
# %m:         
# %n:%n:        
log4j.appender.stdout.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n
log4j.appender.Runlog.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n
log4j.appender.Errorlog.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n

#         
log4j.category.com.neusoft.mbip.dm.util=ERROR

#例

###################
# Console Appender
###################
#log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
#log4j.appender.Threshold=DEBUG
#log4j.appender.CONSOLE.Target=System.out
#log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
#log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n


#####################
# File Appender
#####################
#log4j.appender.FILE=org.apache.log4j.FileAppender
#log4j.appender.FILE.File=file.log
#log4j.appender.FILE.Append=false
#log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
#log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
# Use this layout for LogFactor 5 analysis

########################
# Rolling File????? RollingFileAppender??????????????????
########################
#log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
#log4j.appender.ROLLING_FILE.Threshold=ERROR
#     
#log4j.appender.ROLLING_FILE.File=rolling.log
#log4j.appender.ROLLING_FILE.Append=true
#    
#log4j.appender.ROLLING_FILE.MaxFileSize=10KB
#             
#log4j.appender.ROLLING_FILE.MaxBackupIndex=1
#log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
#log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

####################
# Socket Appender
####################
#log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
#log4j.appender.SOCKET.RemoteHost=localhost
#log4j.appender.SOCKET.Port=5001
#log4j.appender.SOCKET.LocationInfo=true
# Set up for Log Facter 5
#log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
#log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n

########################
# SMTP Appender
#######################
#log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
#log4j.appender.MAIL.Threshold=FATAL
#log4j.appender.MAIL.BufferSize=10
#[email protected]
#log4j.appender.MAIL.SMTPHost=mail.hollycrm.com
#log4j.appender.MAIL.Subject=Log4J Message
#[email protected]
#log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
#log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

########################
# JDBC Appender
#######################
#log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
#log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
#log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
#log4j.appender.DATABASE.user=root
#log4j.appender.DATABASE.password=
#log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
#log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
#log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

########################
# Log Factor 5 Appender
########################
#log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
#log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000

###################
#   Appender
###################
#log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
#log4j.appender.im.host = mail.cybercorlin.net
#log4j.appender.im.username = username
#log4j.appender.im.password = password
#log4j.appender.im.recipient = [email protected]
#log4j.appender.im.layout=org.apache.log4j.PatternLayout
#log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

以上の内容は周先生の科学研究所から転載した.
http://tmsoft.lsxy.com/trackback.php?tbID=509&extra=4261f1