Apache Solrのログをlogback経由で出力する
SolrのログはTomcatにデプロイするとcatalina.outに出てくるんだけど、それがJDK logging経由なのでえらくフォーマットやローテーションが難しい。Solrは1.4からslf4jをloggingのinterfaceに利用しているので、logbackに実装を変更することも簡単のはずなのでやってみた
- Solrをダウンロードして展開する
$ tar xvzf apache-solr-1.4.0.tgz
- logback,slf4jもダウンロードして展開する
$ wget http://logback.qos.ch/dist/logback-0.9.20.tar.gz $ tar xvzf logback-0.9.20.tar.gz $ rm -rf slf4j-1.5.11 $ wget http://www.slf4j.org/dist/slf4j-1.5.11.tar.gz $ tar xvzf slf4j-1.5.11.tar.gz
- 必要なライブラリをSolrにコピー
$ rm apache-solr-1.4.0/lib/slf4j-api-1.5.5.jar $ rm apache-solr-1.4.0/lib/slf4j-jdk14-1.5.5.jar $ cp -p slf4j-1.5.11/slf4j-api-1.5.11.jar apache-solr-1.4.0/lib/ $ cp -p slf4j-1.5.11/slf4j-jdk14-1.5.11.jar apache-solr-1.4.0/lib/ $ cp -p logback-0.9.20/logback-classic-0.9.20.jar apache-solr-1.4.0/lib/ $ cp -p logback-0.9.20/logback-core-0.9.20.jar apache-solr-1.4.0/lib/
$ mkdir apache-solr-1.4.0/src/webapp/web/WEB-INF/classes $ cat > apache-solr-1.4.0/src/webapp/web/WEB-INF/classes/logback.xml <<_EOF_ <configuration> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>/var/logs/solr.log</file> <append>true</append> <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> <encoder> <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> </encoder> </appender> <root level="debug"> <appender-ref ref="FILE" /> </root> </configuration> _EOF_
- solrをビルド
$ cd apache-solr-1.4.0 $ ant dist #jarのダウンロードにproxyが必要な場合は "-Dproxy.host=... -Dproxy.port=..."を設定する
- できたwarをTomcatにデプロイ
これでsolrを動かしてみると、/var/logs/solr.logにログが出るはず。