查看系统日志 (/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)+ 级别(下拉框)两个字段 — 与其他检索画面(/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 调用单行 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 设备出生 — 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:诊断 / 巡检
- 环境配置变更追踪:环境配置