LoginSignup
6

More than 5 years have passed since last update.

Solr5.4のログの設定

Last updated at Posted at 2016-02-02

Solr 5.4 の環境構築で、ログ周りの設定が意外につまったので、整理としてのメモ。

ログの種類

おおむね、次の三つ

  1. gcログ
  2. solr本体
  3. jetty(アクセスログ)

アクセスログは標準では出力されないですし、大体の場合は不要でしょうが、solr 3.x 以前はtomcatにデプロイした形だとtomcatのアクセスログがあったので、それも残しておきたいケースもあるかと思い、あわせてとりあげます。

起動時の設定ファイル

公式サイトにあるように、インストールスクリプトでやったものとします。
https://cwiki.apache.org/confluence/display/solr/Taking+Solr+to+Production#TakingSolrtoProduction-Logsettings

/etc/init.d/solr が起動スクリプトで、その中のSOLR_ENVに指定されているファイルが、ヒープやgcなどの設定値を持つファイルです。

公式サイトでは/var/solr/solr.in.sh になってましたが、CentOS 6.4でやったときは/etc/default/solr.in.sh になってました。

gcとsolr本体のログはインストールスクリプトで指定したデータディレクトリのlogs以下に生成されます。
データディレクトリを指定していなければ/var/solr/logs になるはずです。

gcログ

/etc/default/solr.in.sh の下記部分がgcログの設定です。gcログがいらない場合は、この変数をコメントアウトすればよいです。有効な場合は、solr_gc.logが生成されます。

# Enable verbose GC logging
GC_LOG_OPTS="-verbose:gc -XX:+PrintHeapAtGC -XX:+PrintGCDetails \
-XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime \
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=3 -XX:GCLogFileSize=5M"

ローテーションの設定をすると、solr_gc.log.<n>.current が現在のログファイル名になります。
標準では、起動のたびにsolr_gc.logを日付を付与してリネームしてバックアップされます。ローテーションの設定をすれば、バックアップ対象の名前とは違ってくるので、起動のたびにsolr_gc_log_yyyyMMdd_HHmmが生成されることがなくなります。

solr本体

log4jで出力されます。管理画面からもログレベルを指定できるようですが、/var/solr/log4j.properties でローテーションが設定できます。

デフォルトであるCONSOLEのログは大抵は必要ないので、コメントアウトしてしまいます。

log4j.rootLogger=INFO, file

#log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
#log4j.appender.CONSOLE.layout=org.apache.log4j.EnhancedPatternLayout
#log4j.appender.CONSOLE.layout.ConversionPattern=%-4r %-5p (%t) [%X{collection} %X{shard} %X{replica} %X{core}] %c{1.} %m%n

solr.logのローテーションの設定は下記部分になります。

#- size rotation with log cleanup.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=2KB
log4j.appender.file.MaxBackupIndex=3

#- File to log to and log format
log4j.appender.file.File=${solr.log}/solr.log
log4j.appender.file.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) [%X{collection} %X{shard} %X{replica} %X{core}] %c{1.} %m\n

このsolr.logも、起動のたびにタイムスタンプが付与されてバックアップされるようになっています。それが本番環境などでは不要な場合は、ログファイル名を変えることで、log4jのローテーションだけに任せることができます。

log4j.appender.file.File=${solr.log}/solr-test.log

jetty

jettyのアクセスログは出力させるには、${SOLR_HOME}/server/etc/jetty.xml(デフォルトは/opt/solr)のアクセスログの部分のコメントアウトをはずせばよいです。

jetty.xml
<!-- =========================================================== -->
    <!-- Configure Request Log                                       -->
    <!-- =========================================================== -->
    <!-- ← はずす
    <Ref id="Handlers">
      <Call name="addHandler">
        <Arg>
          <New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler">
            <Set name="requestLog">
              <New id="RequestLogImpl" class="org.eclipse.jetty.server.NCSARequestLog">
                <Set name="filename">
                   logs/request.yyyy_mm_dd.log
                </Set>
                <Set name="filenameDateFormat">yyyy_MM_dd</Set>
                <Set name="retainDays">90</Set>
                <Set name="append">true</Set>
                <Set name="extended">false</Set>
                <Set name="logCookies">false</Set>
                <Set name="LogTimeZone">UTC</Set>
                <Set name="LogLatency">true</Set>
              </New>
            </Set>
          </New>
        </Arg>
      </Call>
    </Ref>
    --> ← はずす

そのままはずせば、${SOLR_HOME}/server/logsに、下記のようなおなじみのアクセスログが出力されるようになります。

10.0.2.2 - - [01/Feb/2016:07:14:16 +0000] "GET /solr HTTP/1.1" 302 -
10.0.2.2 - - [01/Feb/2016:07:14:16 +0000] "GET /solr/ HTTP/1.1" 200 -
10.0.2.2 - - [01/Feb/2016:07:14:16 +0000] "GET /solr/admin/cores?wt=json&indexInfo=false&_=1454310856396 HTTP/1.1" 200 -
10.0.2.2 - - [01/Feb/2016:07:14:16 +0000] "GET /solr/admin/info/system?wt=json&_=1454310856675 HTTP/1.1" 200 -
10.0.2.2 - - [01/Feb/2016:07:14:16 +0000] "GET /solr/tpl/index.html?_=1454310856717 HTTP/1.1" 200 6141

レスポンスタイムを出すにはこちらを参照。
http://qiita.com/iorionda/items/10d6a5e8bbc9eae3aa15

参考サイト

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6