システムログ
ゲートウェイがブート / 収集 / 通信 / 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 は prefix 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 デバイス出生 — 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: 診断および点検
- 環境設定変更の追跡: Web UI 環境設定