システムログの表示 (/ui/system/log/list)
ゲートウェイが起動 / 収集 / 通信 / API 呼び出し中に記録した システムログ (Cassandra pe.app_system_log) を検索・確認する画面です。
ホームカード システムエラー (本日) の赤い数字をクリック → 自動遷移 (本日の ERROR のみ)、または直接 /ui/system/log/list。
1. 画面構成
┌─────────┬──────────────────────────────────────────────────┐
│ 좌측 │ 우측 │
│ 검색폼 │ 로그 목록 (DataTables) │
│ │ │
│ [기간] │ ┌───────────┬───────┬──────────────────────────┐ │
│ [레벨] │ │ 시간 │ 레벨 │ 메세지 │ │
│ │ ├───────────┼───────┼──────────────────────────┤ │
│ [검색] │ │ ... │ INFO │ ... │ │
└─────────┴──────────────────────────────────────────────────┘
デフォルトの検索期間: 直近 30 日 (00:00 ~ 23:59)。
2. 左側の検索フォーム
| フィールド | 意味 | デフォルト |
|---|---|---|
| 検索期間 | YYYY-MM-DD HH:mm ~ YYYY-MM-DD HH:mm の範囲 | 本日から 29 日前の 00:00 ~ 本日 23:59 |
| レベル | 전체 / INFO / WARN / ERROR | すべて |
左側のアクション
| ボタン | 動作 |
|---|---|
| ↻ 更新 (ページ上部) | log.search() — 現在のフォーム値で再検索 |
| 🔍 検索 (青いボタン、左パネル右下) | log.search() — フォーム値で /system/log/search を呼び出し |
左側のフォームは 検索期間 (date range picker) + レベル (コンボ) の 2 フィールドのみ — 他の検索画面 (/ui/connect/list、/ui/point) と同じ pp-cell-pill トーンのラベル / 丸みのあるフォームデザインを共有します。
3. 右側 — ログ一覧 (DataTables)
| # | カラム | 表示 |
|---|---|---|
| 1 | 時刻 | timestamp.iso (ms まで) — 中央揃え、デフォルトは降順 (新しい順) |
| 2 | レベル | 丸みのあるカプセルバッジ (border-radius: 5px) — 🟦 INFO (青 solid) / 🟧 WARN (オレンジ solid) / 🟥 ERROR (赤 solid)。/ui/connect/list など他ページの pp-cell-pill と同じトーン |
| 3 | メッセージ | ログ本文 (長いメッセージは自動折り返し、クリックで展開) |
ページサイズ: 10 / 20 / 50 / 100 / 1000 から選択可能 (デフォルト 100)。
右側のアクション
| ボタン | 動作 |
|---|---|
| ↻ 更新 | log.list() |
| 🗑 すべて削除 | log.truncate() — 確認ダイアログ → 全件削除 (pe.app_system_log truncate)。復元不可 |
4. よく見られるパターン
| メッセージ / レベル | 意味 / 次の対処 |
|---|---|
ERROR [PLCDriverConnector] connection failed ... | PLC 接続失敗。IP / ポート / ファイアウォールを点検 |
ERROR [PLCValueReader] read failed at TAG_* | 該当タグのアドレス / データ型 (format) を確認 |
WARN [SchedulerStartListener] startup race detected | 非常にまれな起動時の race — restart.sh をもう一度 |
INFO [TAG_WRITE] OK opc_id=... tag_id=... value=... user_agent=... remote_ip=... | 正常な書き込み記録 — audit 用。remote_ip はデフォルト RemoteAddr、reverse proxy opt-in 時は X-Forwarded-For の先頭 IP |
INFO [API_ACCESS] method=GET path=/api/v1/... status=200 ... | REST API 呼び出しの 1 行 audit (ApiAccessLogFilter) — すべての /api/* 呼び出しが記録されます。apikey は先頭 4 文字 + 長さでマスキング |
WARN [API_ACCESS] ... status=401 auth=none | 認証失敗の呼び出し — キーの欠落 |
WARN [API_ACCESS] ... status=401 auth=deprecated_query | サポート終了した ?api_key= クエリ認証の試行 — ヘッダー / Bearer への移行が必要 |
ERROR [Cassandra*] timeout / coordinator overload | DB 負荷 / ディスク / heap を点検。node-info.sh |
INFO [SparkPlugSession] NBIRTH publish complete seq=0 | Sparkplug の正常な再起動 |
INFO [SparkPlugSession] DBIRTH publish complete devices=N | Sparkplug デバイスの birth — N 個の OPC が birth を発行 |
5. データ出所 / 呼び出し API
| 動作 | API |
|---|---|
| 検索 | GET /system/log/search (Query: s_date_range, level, ...) |
| すべて削除 | POST /system/log/truncate |
内部保存: Cassandra pe.app_system_log テーブル。TTL の個別設定 が可能 (app.properties の system.log.ttl.days)。
6. よく陥る落とし穴
| 症状 | 原因 / 解決 |
|---|---|
| 検索結果が空 | デフォルトの 30 日範囲外 / レベルフィルタで除外。期間 を 1 年に、レベル を すべて に |
| ログが多すぎて画面が重い | ページサイズを 100 → 20 に、または レベル を ERROR に絞る |
| ERROR 件数が システムエラー (本日) カードの数字と異なる | カードは 本日 00:00 以降 / この画面の検索はユーザーが指定した期間 |
| すべて削除 後に統計が 0 | 正常 — 新しい ERROR が入るまで空の状態 |
| ログ保持が長すぎてディスクを圧迫 | system.log.ttl.days を短縮 / clean.sh と node-cleanup.sh の組み合わせ |
7. さらに詳しく
- システムログ自体の出所 / 保存場所: モニタリング (運用者/REST)
- ログファイル (catalina.out、cassandra/system.log) の統合 tail: 診断 / 点検
- 環境設定の変更追跡: 環境設定