blob: 944b9e9db8b58f90b29f71ad7e9cba0a9b865f88 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
---
layout: doc
---
# メッセージログ
チャンネルチャットのメッセージを 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
```
|