slf4j + logback でログを毎時ローテートするsolrのwarファイルを作成する

概要

solr (tomcat6) のロギングはデフォルトがJDK loggingみたいなのだけど、こいつだと毎時ログのローテートをするのが困難なのでslf4j + logbackを使って毎時ローテートできるwarファイルを作る手順。JAVA関係のロギングは

  • クライアントからのアクセスを抽象化するLogging API
  • ログの出力自体をコントロールするLogging Utility

の組み合わせで成り立ってる場合が多いみたいで、API、Utilityともにいくつか種類があるみたい。
少し前までは commons-logging + log4j という組み合わせが主流だったみたいだけど、昨今は slf4j + logback という流れになってきてる様子。
solr自体はslf4j + JDK loggingをデフォルトで採用しているようなので JDK logging -> logbackを行えば良いという事になる

手順

wget http://ftp.riken.jp/net/apache/lucene/solr/3.4.0/apache-solr-3.4.0-src.tgz
wget http://logback.qos.ch/dist/logback-1.0.0.tar.gz

tar zxvf apache-solr-3.4.0-src.tgz
tar zxvf logback-1.0.0.tar.gz

mkdir apache-solr-3.4.0/solr/webapp/web/WEB-INF/classes
cp logback-1.0.0/logback-core-1.0.0.jar apache-solr-3.4.0/solr/lib/
cp logback-1.0.0/logback-classic-1.0.0.jar apache-solr-3.4.0/solr/lib/

logbackの設定ファイルを作成。出力先は/var/log/tomcat6/solr.YYYY-MM-DD_HH.log

 ------ apache-solr-3.4.0/solr/webapp/web/WEB-INF/classes/logback.xml ------

    
        
            /var/log/tomcat6/solr.%d{yyyy-MM-dd_HH}.log
            72
        

        
            %-4relative [%thread] %-5level %logger{35} - %msg%n
        
    

    
        
    

warファイルを作成する

cd apache-solr-3.4.0
ant compile
cd solr
ant dist

apache-solr-3.4.0/solr/dist/apache-solr-3.4-SNAPSHOT.war が毎時ローテートに対応したsolrのwarファイルになる。