4.3. ロギング設定

4.3.1. ログ出力場所

標準状態では、MBaaS サーバのログは Tomcat のログファイルである catalina.out ファイルにテキストで書きだされます。

API サーバの場合、ログには以下の情報が出力されます。

  • 日付
  • 時刻
  • ログレベル (INFO, DEBUG など)
  • アクセス元IPアドレス
  • アプリケーションID (該当する場合)
  • ユーザID (該当する場合)
  • logger名 (通常は実装クラス名)
  • ログメッセージ

コンソールサーバの場合、ログには以下の情報が出力されます。

  • 日付
  • 時刻
  • ログレベル
  • アクセス元IPアドレス
  • デベロッパメールアドレス (該当する場合)
  • logger名
  • ログメッセージ

4.3.2. ログ設定

ロギングは logback を使用して行われています。 logback の設定は、プロパティファイルで指定することができるようになっています。

プロパティファイルは、以下いずれかの場所に配置することができます。

  • /etc/baas/logback.properties
  • c:/NEC/BaaS/etc/logback.properties (Windowsの場合)
  • ~/.baas/logback.properties

以下に設定例を示します。

# ログレベル
logback.level=INFO

# ログ出力タイプ
logback.types=STDOUT,FILE,FLUENT

# ログ出力ディレクトリ
logback.logdir=/var/log/baas

# fluentd サーバ
logback.fluent.host=localhost
logback.fluent.port=24224

ログレベル

logback のログレベルはデフォルトで INFO に設定されています。

logback.level= にレベルを指定します。指定できる値は TRACE, DEBUG, INFO, WARN, ERROR, ALL, OFF のいずれかです。

ログ出力タイプ

ログ出力タイプには STDOUT, FILE, FLUENT のいずれか1つ以上をカンマ区切りで指定します。

  • STDOUT : 標準出力にログを出力します (Tomcat の場合は catalina.out などに出力)
  • FILE : ファイルに出力します。出力先ディレクトリは logback.logdir で指定します。
  • FLUENT : fluentd にログを出力します (後述)

ログ出力ディレクトリ

logback.types に FILE を指定した場合、logback.logdir で指定したディレクトリに ログファイルが出力されます。ログファイルは、日時で自動的にローテートされます。

logback.logdir を指定しなかった場合のデフォルト値は、Windows では C:/NEC/BaaS/log、 それ以外では /var/log/baas となります。

ローテートパターンを変更したい場合は、logback-common.xml ファイルに記述されている RollingFileAppender 設定を直接編集してください。

4.3.3. ログフォーマット

ログフォーマットは、logback の設定である logback.xml ファイルで設定します。

logback.xml は、アプリケーションの WEB-INF/classes/logback.xml に格納されています。

なお、ソースコード上では、logback.xml は以下2箇所にあります。

  • ${SRCROOT}/api/src/main/resources/logback.xml (APIサーバ)
  • ${SRCROOT}/console/src/main/resources/logback.xml (デベロッパコンソールサーバ)

以下のように pattern 変数にフォーマットを指定します。

<variable name="pattern" value="%d{yy-MM-dd HH:mm:ss.SSS} %-5level ip=%X{remoteIp} app=%X{appId} usr=%X{userId} %logger{0} - %msg%n"/>

4.3.4. fluentd の利用

標準状態では、ログは各 AP サーバ、デベロッパコンソールサーバ毎に個別に出力されます。

fluentd を使用すると、ログを一箇所に集約したり、出力先を MongoDB にしたりといった ことが可能になります。

fluentd を使用する方法については、 fluentd を利用したロギング を参照してください。