Skip to content

メッセージログ

チャンネルチャットのメッセージを NDJSON (Newline Delimited JSON) 形式でファイルに記録します.この機能はチャンネルチャットが有効な場合に利用でき,デフォルトで有効です.

設定

yaml
# config.yml
features:
  channelChat:
    enabled: true
    messageLogging:
      enabled: true
      retentionDays: 30
      maxFileSizeMB: 100
設定キーデフォルト説明
enabledtrueメッセージログを有効にする
retentionDays30ログファイルの保持日数 (0 で無期限保持)
maxFileSizeMB100単一ログファイルの最大サイズ (MB)

ログファイルの形式

ログファイルは plugins/LunaticChat/logs/ ディレクトリに保存されます.各行が1つの JSON オブジェクトです.

ファイル名

channel-messages-YYYY-MM-dd.json

ファイルサイズが maxFileSizeMB を超えた場合,サフィックス付きの新しいファイルが作成されます.

channel-messages-2026-04-05.json       # 基本ファイル
channel-messages-2026-04-05-1.json     # サイズ超過時
channel-messages-2026-04-05-2.json     # さらに超過時

エントリ形式

各行は以下の JSON 構造を持ちます.

json
{
  "timestamp": "2026-04-05T14:23:45.123Z",
  "playerId": "550e8400-e29b-41d4-a716-446655440000",
  "playerName": "Steve",
  "channelId": "general",
  "message": "Hello everyone!"
}
フィールド説明
timestampStringISO 8601 形式のタイムスタンプ (UTC)
playerIdStringプレイヤーの UUID
playerNameStringプレイヤーの表示名
channelIdStringメッセージが送信されたチャンネルの ID
messageStringメッセージの内容

ファイルローテーション

  • 日次ローテーション: 日付が変わると新しいファイルが作成されます
  • サイズローテーション: maxFileSizeMB を超えるとサフィックス付きファイルに切り替わります
  • 自動クリーンアップ: retentionDays で指定した日数を超えたログファイルは自動的に削除されます (0 の場合は削除されません)

ログの活用例

NDJSON 形式のため,jq などのツールで簡単にフィルタリング・集計が可能です.

特定チャンネルのメッセージを抽出

bash
jq 'select(.channelId == "general")' channel-messages-2026-04-05.json

特定プレイヤーのメッセージを抽出

bash
jq 'select(.playerName == "Steve")' channel-messages-2026-04-05.json

メッセージ数をチャンネルごとに集計

bash
jq -s 'group_by(.channelId) | map({channel: .[0].channelId, count: length})' channel-messages-2026-04-05.json