Javaログデザイン&実践(2)-デザイン編

4785 ワード

設計段階では主にいくつかの問題を考慮する.
  • アプリケーションまたは機能によってログを分割するが、把握度は
  • に及ばない.
  • ログ構成動的調整
  • をサポートする必要がある
    SpringのLog 4 jConfigListenerを使用して、ログ・レベルの動的調整を実現
    web.xml対応位置は以下の内容を加える
    <context-param>
    
    
    
      <param-name>log4jConfigLocation</param-name>
    
    
    
      <param-value>/WEB-INF/log4j.properties</param-value>
    
    
    
     </context-param>
    
    
    
    
    
     <context-param>
    
    
    
      <param-name>log4jRefreshInterval</param-name>
    
    
    
      <param-value>10000</param-value>
    
    
    
     </context-param>
    
    
    
    
    
     <listener>
    
    
    
      <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    
    
    
     </listener>

    【注意】
    1.log 4 jConfigLocationを/WEB-INF/classes/log 4 jに指定しない.properties
    log 4 jConfigLocationが/WEB-INF/classes/log 4 jとして指定する.propertiesは、ログ構成を動的に調整する必要がある場合、クラスの再ロードを引き起こす可能性があります.ただし動的調整/WEB-INF/log 4 j.propertiesはクラスの再ロードを起こさない
    2.log 4 jRefreshIntervalの単位はミリ秒
    3.      /WEB-INF/log4j.propertiesと/WEB-INF/classes/log 4 j.propertiesは同時に存在しない.そうしないと異常を報告する.
    4.JUnitユニットテストクラスの問題
    ユニットテストの実行中に、次のエラーが発生しました.
    log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
     
    デフォルトのlog 4 jプロファイルが見つからないため、以下のように手動で指定できます.
    Log4jConfigurer.initLogging("classpath:log4j.test.properties");
    log4j.test.propertiesは、実行ユニットテストクラスに特化したプロファイルです.
    プロジェクトごとに独立したログファイルを指定
    /WEB-INF/log4j.propertiesの構成は次のとおりです.
    log4j.rootLogger=info, file
    
    
    
    
    
    log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
    
    
    
    log4j.appender.file.File=${catalina.home}/logs/projectName
    
    
    
    log4j.appender.file.DatePattern='.'yyyy-MM-dd'.log'
    
    
    
    log4j.appender.file.Encoding=UTF-8
    
    
    
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    
    
    
    log4j.appender.file.layout.ConversionPattern=%p %d %m [%l] %n

    log4j.appender.file.File=${catalina.home}/logs/projectName
    のprojectNameは、プロジェクト名など、プロジェクトを一意に識別する文字列です.
    ${catalina.home}は現在のtomcatエンジニアリングルートディレクトリを表し、Tomcat起動時にこの変数を設定します.
     
    以上の構成により、プロジェクトごとに独立したログファイルを指定できるディレクトリ
     
    小結
    以下のいくつかの質問に答えます.
    【質問】1つのTomcatが複数のプロジェクトをロードし、ログの内容がどのプロジェクトであるかをどのように決定しますか?
    【答】工程ごとに独立したログファイルを指定し、複数の工程ログファイルが1つのファイルに出力される問題を回避する
    【質問】複数のTomcatが同時に同じプロジェクトをロードする場合、log 4 jのDailyRollingFileAppenderなどのファイルクラスAppenderを使用できますか?
    【答】はい、ファイル名を指定する場合は、類似のものを使用できます
    log4j.appender.file.File=${catalina.home}/logs/projectName
    の構成で、Tomcatのログごとに保存されます.
    【問】複数のTomcatが同時に同じプロジェクトをロードする場合、ログ出力ディレクトリを個別に指定できますか?
    【答え】前の質問と同じ答えができる
    【問】クラスのログレベルを動的に調整できますか?
    【答え】本論文ではすでに一つの考え方を提供している