メッセージログ
チャンネルチャットのメッセージを NDJSON (Newline Delimited JSON) 形式でファイルに記録します.この機能はチャンネルチャットが有効な場合に利用でき,デフォルトで有効です.
設定
yaml
# config.yml
features:
channelChat:
enabled: true
messageLogging:
enabled: true
retentionDays: 30
maxFileSizeMB: 100| 設定キー | デフォルト | 説明 |
|---|---|---|
enabled | true | メッセージログを有効にする |
retentionDays | 30 | ログファイルの保持日数 (0 で無期限保持) |
maxFileSizeMB | 100 | 単一ログファイルの最大サイズ (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!"
}| フィールド | 型 | 説明 |
|---|---|---|
timestamp | String | ISO 8601 形式のタイムスタンプ (UTC) |
playerId | String | プレイヤーの UUID |
playerName | String | プレイヤーの表示名 |
channelId | String | メッセージが送信されたチャンネルの ID |
message | String | メッセージの内容 |
ファイルローテーション
- 日次ローテーション: 日付が変わると新しいファイルが作成されます
- サイズローテーション:
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