[Solr]ロギングについてのTips
動的にログレベルを変更する
管理画面から
Solrの管理画面 Logging → Level で Solr 稼働中にログレベルを変更できます。
特定のクラスのログ出力だけを変更することもできますし、rootを変更することで全体を変更することもできます。
APIで
以下のようにAPIを呼び出すことでログレベルを変更できます。
curl -s http://localhost:8983/solr/admin/info/logging --data-binary "set=root:WARN"
設定ファイルの場所を指定する
環境変数 LOG4J_PROPS で log4j2.xml の場所を指定します。
LOG4J_PROPS=/var/solr/log4j2.xml
ログの出力先を指定する
環境変数 SOLR_LOGS_DIR でログの出力先を指定します。
SOLR_LOGS_DIR=/var/solr/logs
日付ベースのログローテーションにする
log4j2.xml の MailLogFile の設定を以下のように変更します。
<RollingRandomAccessFile name="MainLogFile" fileName="${sys:solr.log.dir}/solr.log" filePattern="${sys:solr.log.dir}/solr.log.%d{yyyyMMdd}" > <PatternLayout> <Pattern> %maxLen{%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) [%X{collection} %X{shard} %X{replica} %X{core}] %c{1.} %m%notEmpty{\ =>%ex{short}}}{10240}%n </Pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1"/> </Policies> <DefaultRolloverStrategy max="10"/> </RollingRandomAccessFile>
TimeBasedTriggeringPolicy の interval=1 が1日単位という意味になるのは、filePattern に含まれる最小の単位が日だからです。filePattern に HH が含まれていれば interval=1 は1時間単位の意味になり、 mm が含まれていれば1分単位になります。
log4j2をアップデートする
Solr の配布物に含まれる log4j2 関連の jar ファイルは以下の通りです。
- server/lib/ext/log4j-slf4j-impl-2.14.1.jar
- server/lib/ext/log4j-layout-template-json-2.14.1.jar
- server/lib/ext/log4j-core-2.14.1.jar
- server/lib/ext/log4j-1.2-api-2.14.1.jar
- server/lib/ext/log4j-api-2.14.1.jar
- server/lib/ext/log4j-web-2.14.1.jar
log4j2 をアップデートするときはこれらのファイルを置き換えます。
prometheus-exporter を利用している場合は以下のファイルの置き換えも必要です。
- contrib/prometheus-exporter/lib/log4j-slf4j-impl-2.14.1.jar
- contrib/prometheus-exporter/lib/log4j-core-2.14.1.jar
- contrib/prometheus-exporter/lib/log4j-api-2.14.1.jar