Skip to content

ログ設定

このページでは、設定ファイルを通じてEMQXのログ動作を設定する方法を紹介します。EMQXのログはダッシュボードからも設定可能です。ダッシュボードで設定する場合は、左のナビゲーションメニューから Management -> Logging をクリックしてください。ログおよびダッシュボードの設定に関する詳細は、Logs and Observability - Logs を参照してください。

TIP

このページでは、設定項目に対応するダッシュボードUIのフィールドも紹介しています。
設定ファイルからログを設定する場合は、emqx.conf ではなく base.hocon を使うことを推奨します。
これは、emqx.conf に設定するとダッシュボードでの変更が一時的なものとなり、EMQX再起動時に失われるためです。

EMQXは主に2種類のログハンドラーをサポートしています。コンソールログとファイルログです。さらに、ログを常にファイルに出力するための専用ハンドラーとして監査ログ(Audit Log)も用意されています。

システムのデフォルトログハンドラーは環境変数 EMQX_DEFAULT_LOG_HANDLER により設定可能で、以下の値を受け付けます。

  • file:ログ出力をファイルに向ける
  • console:ログ出力をコンソールに向ける

環境変数 EMQX_DEFAULT_LOG_HANDLER のデフォルトは console ですが、systemdの emqx.service ファイル経由で起動した場合は明示的に file に設定されます。

ファイルとしてログを出力する

EMQXのログ出力ディレクトリは環境変数 EMQX_LOG_DIR で決まります。RPMやDEBパッケージでインストールした場合は /var/log/emqx に設定されます。そうでなければ、EMQXインストールディレクトリ内の log ディレクトリがログディレクトリとなります。

EMQXのDockerコンテナの場合、インストールディレクトリは /opt/emqx なので、ログディレクトリは /opt/emqx/log です。

ログをファイルとして出力するには、ダッシュボードでログハンドラーを設定するか、以下のように base.hocon ファイルを直接編集します。

bash
log {
  file {
    enable = true
    formatter = text
    level = warning
    path = "/var/log/emqx/emqx.log"
    rotation_count = 10
    rotation_size = 50MB
    time_offset = system
    timestamp_format = auto
  }

ここで、

設定項目ダッシュボードUI説明デフォルト値選択可能な値
formatterLog Formatterログのフォーマットを設定します。texttext は自由テキスト形式。
json は構造化ログ形式。
levelLog Level現在のログハンドラーのログレベル、つまり記録したい最小ログレベルを設定します。warningdebug, info, notice, warning, error, critical, alert, emergency
pathLog File Nameログファイルのパスとファイル名を設定します。
デフォルトでは、EMQXインストールディレクトリの log フォルダ内の emqx.log にログを書き込みます。
emqx.log--
rotation_countMax Log Files Number保存可能なログファイルの最大数を設定します。101 - 2,048
rotation_sizeRotation Sizeログファイルがローテーションされる最大サイズを設定します。指定サイズに達すると古いログファイルはリネームされアーカイブディレクトリに移動されます。infinity に設定するとローテーションされません。50MB1 - infinity
time_offsetTime OffsetログのタイムスタンプのUTCからの時差を設定します。system--
timestamp_formatTimestamp Formatログのタイムスタンプのフォーマットを設定します。autoauto: 使用中のログフォーマッターに応じて自動判別。テキストは rfc3339、JSONは epoch を使用。
epoch: マイクロ秒精度のUnixエポック形式。
rfc3339: RFC3339準拠の日付時刻文字列形式。

コンソールにログを出力する

EMQXをDockerコンテナで起動すると、デフォルトのログハンドラーは console になります。
ログレベルやログフォーマットは以下の設定項目で変更可能です。

bash
log {
  console {
    formatter = json
    level = warning
    time_offset = system
    timestamp_format = auto
  }
}

ここで、

設定項目ダッシュボードUI説明デフォルト値選択可能な値
formatterLog Formatterログのフォーマットを設定します。texttext は自由テキスト形式。
json は構造化ログ形式。
levelLog Level現在のログハンドラーのログレベル、つまり記録したい最小ログレベルを設定します。warningdebug, info, notice, warning, error, critical, alert, emergency
time_offsetTime OffsetログのタイムスタンプのUTCからの時差を設定します。system--
timestamp_formatTimestamp Formatログのタイムスタンプのフォーマットを設定します。autoauto: 使用中のログフォーマッターに応じて自動判別。テキストは rfc3339、JSONは epoch を使用。
epoch: マイクロ秒精度のUnixエポック形式。
rfc3339: RFC3339準拠の日付時刻文字列形式。

TIP

EMQXはより詳細なカスタマイズに対応する設定項目を提供しています。詳細は EMQX Enterprise Configuration Manual for Enterprise をご参照ください。