4.4. ロギング設定

4.4.1. ログ出力場所

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

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

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

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

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

4.4.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.format=[%d{yyyy-MM-dd HH:mm:ss.SSS}] ${HOSTNAME:--} %-5level [%t] %logger{0} - %msg%n

ログレベル

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 設定を直接編集してください。

ログフォーマット

ログフォーマットは、logbackのフォーマットで設定します。

デフォルトでは、以下のフォーマットが設定されています。

  • APIサーバ
%d{yy-MM-dd HH:mm:ss.SSS} %-5level ip=%X{remoteIp} app=%X{appId} usr=%X{userId} %logger{0} - %msg%n
  • デベロッパコンソールサーバ
%d{yy-MM-dd HH:mm:ss.SSS} %-5level ip=[%X{remoteIp}] developer=[%X{developerEmail}] %logger{0} - %msg%n

logback.formatでログフォーマットのカスタマイズが可能です。

logback.formatでカスタマイズしたログフォーマットは、APIサーバ、デベロッパコンソールサーバ共通で適用されます。

4.4.3. fluentd の利用

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

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

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