log 4 j 2構成の詳細と使用例

4656 ワード

最近のプロジェクト要件はlog 4 j 1を必要とする.2 log 4 j 2にアップグレードして、長い間模索して、少しの経験を得てみんなに分かち合います.
1.log 4 j 2公式サイトで最新jarパッケージをダウンロード(現在log 2 j 2はbeta版)
log 4 j-api-2.0-beta 5にインポートする.JArとlog 4 j-core-2.0-beta 5.jar.
2.プロファイル
log 4 j 2のプロファイル接尾辞名は
.xml, .jsonか.jsn、デフォルトでは、
システムがconfigurationファイルを選択する優先度は、次のとおりです.
1.classpathの下にlog 4 j 2-testという名前がある.jsonまたはlog 4 j 2-test.jsnファイル
2.
classpathの下の名前は
log4j2-test.xml
3.
classpathの下の名前はlog 4 j 2である.jsonまたはlog 4 j 2.jsnファイル
4.classpathの下の名前は
log4j2.xml
したがって、推奨プロファイルはlog 4 j 2である.xml、以下に例を示します.
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
   <Appenders>
      <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d [%t] %-5p [%c] - %m%n"/>
      </Console>
          
     <RollingRandomAccessFile name="DebugAppender" fileName="./logs/lsp_admin_debug.log" append="true" filePattern="./logs/lsp_admin_debug.log.%d{yyyyMMdd}">
      <PatternLayout>
        <Pattern>%d %-5p [%c] %m%n</Pattern>
      </PatternLayout>
      <Policies>
        <TimeBasedTriggeringPolicy interval="24" modulate="true"/>
      </Policies>     
      <ThresholdFilter level="INFO"  onMatch="DENY"  onMismatch="ACCEPT"/>
      <ThresholdFilter level="DEBUG" onMatch="ACCEPT"  onMismatch="DENY"/>
    </RollingRandomAccessFile>
           
   <RollingRandomAccessFile  name="FILE" fileName="/opt/lspv2/lsp_app/logs/lsp_app.log" append="true" filePattern="/opt/lspv2/lsp_app/logs/lsp_app.log.%d{yyyyMMdd}">
      <PatternLayout>
        <Pattern>%d %-5p [%c] %m%n</Pattern>
      </PatternLayout>
      <Policies>
        <TimeBasedTriggeringPolicy  interval="24"  modulate="true"/>
      </Policies>
    </RollingRandomAccessFile >
        
    </Appenders>
    <Loggers>
        
    <logger name="com.ericsson.lsp.service.sim" level="INFO" additivity="false">     
        <appender-ref ref="Console" />
        <appender-ref ref="FILE" />
        <appender-ref ref="Event.error" />
    </logger>
        
  <root level="Info">
        <appender-ref ref="Console" />
        <appender-ref ref="DebugAppender" />
    </root>
    </Loggers>
        
</Configuration>

1.まずは紹介
loggersラベルは、loggerのleverと使用されるappenderを定義するために使用されます.appender-refは、以前に定義されたappendersの名前でなければなりません.たとえば、ここではConsoleです.logはappenderで定義された出力フォーマットでlogを出力します
rootラベルはlogのデフォルト出力形式であり、クラスのlogがloggersで出力leverとフォーマットを明確に指定していない場合、rootで定義されたフォーマットが使用されます.
解析:上記の例のように、com.ericsson.lsp.service.simのすべてのクラスは、consoleとFILEのappenderに従って出力され、logを定義していないクラスはrootのデフォルトに従って出力されます.
2.Appendersタグを紹介します.中にはいろいろな拡張コンポーネントが入っています.主なタイプは
 1.
ConsoleAppender
結果をコンソールに出力
 2.
FileAppender
結果を指定ファイルに出力
 3.
RollingFileAppender
同じように結果をファイルに出力すると、bufferを1つ使うので、速度が速くなります.
他にも
FlumeAppender,
JDBCappenderなどですが、私たちが一番よく使うのは前の3つです.
RollinglRandomessFileの関連プロパティを説明します.
name:appenderの名前を表します
file Name:出力されたファイルのパスを示します
append:追加するかどうか、trueは追加内容が存在するログに、falseは毎回上書きする
FilePattern:ログが指定したサイズまたは時間に達し、新しいログが生成されたときの古いログの名前付きパスを示します.
PatternLayout:log 4 j 1と同様に、出力ログのフォーマットを指定します.具体的な代表の意味は前のブログを参照してください.
Policies:ログがいつ新しいログを生成すべきかを示すポリシーです.
時間ポリシーやサイズポリシーなど、時間ポリシーを使用して24時間おきに新しいログファイルを生成できます.
ThresholdFilter:フィルタ、log 4 j 2には多くのfilterがありますが、よく研究されていません.必要なときに見てください.
前述のThresholdFilterは、出力の最下位レベルを指定します.
出力debugおよびdebugレベル以上のものを出力しますが、debugレベルを出力する必要がある場合は、次のfilterを追加します.
しかし、このような効果はdebugとinfoの2つのレベルのログを出力するので、2つのfilterの順序を変えればよい.
もちろん他にもたくさんの構成がありますが、自分で公式サイトを見ることができます.
http://logging.apache.org/log4j/2.x/manual/appenders.html
3.使用例
import org.apache.logging.log4j.LogManager;  
import org.apache.logging.log4j.Logger;  
public class Test {  
   private static Logger logger = LogManager.getLogger("HelloWorld");  
   public static void main(String[] args){  
       Test.logger.info("hello,world");  
       Test.logger.error("There is a error here");  
   }  
}  
取得loggerは1つの方式を変えて、logManagerを通じてloggerを取得して、その他はlog 4 j 1と同じに、正常に使用します