Documentation

You are viewing the documentation for the 2.6.x development release. The latest stable release series is 2.4.x.

§ログの設定

Play がログ出力に使っている Logback の詳細な設定は、Logback のドキュメント を参照してください。

§デフォルト設定

Play は本番環境で以下のデフォルト設定を使用します:

Unable to find label in source file /confs/play/logback-play-default.xml

この設定には注意すべき点がいくつかあります:

§カスタム設定

どのような設定でも、カスタマイズする場合は独自の Logback 設定ファイルを指定する必要があります。

§プロジェクトソースにある設定ファイルを使う

conf/logback.xml ファイルを用意することで、デフォルトのログ設定を定めることができます。

§外部設定ファイルを使う

システムプロパティで設定ファイルを指定することもできます。これは、設定ファイルがアプリケーションソースの外部で管理されるであろう本番環境において特に便利です。

注意: ログシステムは、システムプロパティで指定された設定ファイルに最高の優先度、次に conf ディレクトリにあるファイル、最後にデフォルトと優先度を与えます。これにより、アプリケーションのログ設定をカスタマイズしつつ、特定の環境や開発者の設定によって上書くことができます。

§-Dlogger.resource を使う

クラスパスから設定ファイルを読み込むように指定します:

$ start -Dlogger.resource=prod-logger.xml

§-Dlogger.file を使う

ファイルシステムから設定ファイルを読み込むように指定します:

$ start -Dlogger.file=/opt/prod/logger.xml

§

以下は、ローリングファイルアペンダだけでなく、アクセスログを出力する別のアペンダも使う設定例です:

<configuration>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${user.dir}/web/logs/application.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- Daily rollover with compression -->
            <fileNamePattern>application-log-%d{yyyy-MM-dd}.gz</fileNamePattern>
            <!-- keep 30 days worth of history -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%date{yyyy-MM-dd HH:mm:ss ZZZZ} [%level] from %logger in %thread - %message%n%xException</pattern>
        </encoder>
    </appender>
    
    <appender name="ACCESS_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${user.dir}/web/logs/access.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover with compression -->
            <fileNamePattern>access-log-%d{yyyy-MM-dd}.gz</fileNamePattern>
            <!-- keep 1 week worth of history -->
            <maxHistory>7</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%date{yyyy-MM-dd HH:mm:ss ZZZZ} %message%n</pattern>
            <!-- this quadruples logging throughput -->
            <immediateFlush>false</immediateFlush>
        </encoder>
    </appender>

    <!-- additivity=false ensures access log data only goes to the access log -->
    <logger name="access" level="INFO" additivity="false">
        <appender-ref ref="ACCESS_FILE" />
    </logger>
    
    <root level="INFO">
        <appender-ref ref="FILE"/>
    </root>

</configuration>

これは、いくつかの便利な機能を実演しています:
- 肥大化するログファイルの管理を支援する RollingFileAppender を使います。
- アプリケーション外部のディレクトリにログファイルを書き出すので、アップグレードやその他の影響を受けません。
- FILE アペンダは、Sumo Logic のようなサードパーティのログ解析プロバイダがパースできるように、メッセージフォーマットを拡張します。
- access ロガーは、ACCESS_FILE_APPENDER によって別のログファイルに転送されます。
- すべてのロガーの閾値は、本番ログ出力では一般的に選択される INFO に設定されています。

§Akka ログ設定

設定によって Play 内部のログ機能を使うか使わないか分からないものの、Akka には独自のログシステムがあります。

デフォルトで Akka は Play のログ設定を無視し、独自のフォーマットを使ってログメッセージを STDOUT に出力します。このログレベルは application.conf で設定することができます:

akka {
  loglevel="INFO"
}

Akka に Play のログ機能を使うよう指示する場合、いくつかの注意深い設定が必要です。まず、以下の設定を application.conf に追加します:

akka {
  loggers = ["akka.event.slf4j.Slf4jLogger"]
  loglevel="DEBUG"
}

いくつかの点に注意してください:

つづいて、Logback 設定にて Akka のログ設定を改善します:

<!-- Set logging for all Akka library classes to INFO -->
<logger name="akka" level="INFO" />
<!-- Set a specific actor to DEBUG -->
<logger name="actors.MyActor" level="DEBUG" />

スレッドやアクターアドレスなどを含む便利な Akka ロガーのアペンダを設定したい場合もあることでしょう。

Logback と Slf4j の統合に関する詳細を含む Akka のログ設定詳細については、Akka のドキュメント を参照してください。

Next: Play フィルタの設定


このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。