ログフレーム

3611 ワード

説明spark関連プロジェクトを開発する際、ログフレームワークの選択にいくつかの穴を踏んで、以下のように記録しました.
  • もともとlogbackを使用する予定だったが、slf4jは異常を示す.
  • .
  • mavenexclusionsを設置することを試み、従来のlog4jフレームを排除したが、hadoop関連アーキテクチャの多くはlog4jフレームを使用し、排除に手間がかかり、exclusionsを大量に設置することでpomファイルの可読性を低下させた.
  • は、元のログフレームワークと一致することを決定する、すなわち、log4jフレームワーク
  • を用いる.
  • log4j.rootCategory=WARN, consoleは旧式の書き方で、効果はlog4j.rootLoggerに等しく、後者を使用すれば
  • である.
  • プロファイルで指定するAppenderは、同じ名前のクラスに対応し、
  • の理解を助けるためにコードで表示できます.
    補足
  • slf4jはドアモードの典型的な応用である.詳細は以下を参照してください.https://www.cnblogs.com/xrq730/p/8619156.html
  • で呼び出すことができるログフレームワークは、slf4jlogbacklog4jlog4j2である.環境依存に複数の呼び出すことができるログフレームワークが存在する場合、slf4jは異常を宣言する.
    #      `Found binding`,                  
    #           `StaticLoggerBinder.class`, `slf4j`       ,             
    SLF4J: Class path contains multiple SLF4J bindings. 
    SLF4J: Found binding in [jar:file:/slf4j-log4j12-1.7.16.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    

    プロファイルlog4j.properties出力ログフォーマットの一般的なパラメータは次のとおりです.
    識別
    意味
    %p
    出力優先度、すなわちDEBUG,INFO,WARN,ERROR,FATAL
    %r
    アプリケーションの起動からログメッセージの出力までの出力にかかるミリ秒数
    %t
    ログイベントを生成するスレッド名を出力
    %f
    ログメッセージが属するカテゴリのクラス別名を出力
    %c
    ログメッセージが属するクラスのフルネームを出力
    %d
    ログポイントの日付または時刻を出力し、フォーマットを指定します:%d{yyyy-MM-dd HH:mm:ss}
    %l
    ログ・イベントの発生場所、すなわちログ・メッセージを出力する文は、そのカテゴリの数行目にあります.
    %m
    log(message)のmessageなど、コードで指定されたメッセージを出力します.
    %n
    改行記号を出力
    基本的な構成は次のとおりです.
    ###        ###
    ###     ,       
    pattern4file = [%-5p] %d{yyyy-MM-dd HH:mm:ss.SSS} %c[%t]: %m%n
    ###     ,        
    pattern4cons = [%-5p] %d{HH:mm:ss} %l: %m%n
    #              ,           ,          appender   
    #          : ALL DEBUG INFO WARN ERROR FATAL
    log4j.rootLogger = DEBUG, console, D, E
    
    ###          ###
    log4j.appender.console=org.apache.log4j.ConsoleAppender
    log4j.appender.console.Threshold = INFO
    log4j.appender.console.target=System.err
    log4j.appender.console.layout=org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern=${pattern4cons}
    
    ###   DEBUG            ###
    # DailyRollingFileAppender,      ,        
    log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
    #         
    log4j.appender.D.File = ./logs/debugDemo.log
    log4j.appender.D.Append = true
    log4j.appender.D.Threshold = DEBUG 
    log4j.appender.D.layout = org.apache.log4j.PatternLayout
    log4j.appender.D.layout.ConversionPattern = ${pattern4file}
    
    ###   ERROR            ###
    log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.E.File = C://myDemo/logs/errorDemo.log
    log4j.appender.E.Append = true
    log4j.appender.E.Threshold = ERROR 
    log4j.appender.E.layout = org.apache.log4j.PatternLayout
    log4j.appender.E.layout.ConversionPattern = ${pattern4file}