# 星中心日志分析 **Generated:** 2026-04-30 **Type:** Log collection workspace (not a code repo) ## OVERVIEW Production log collection for Cloudwalk elevator access-control system (`elevator-app`) — a Java Spring Boot + Spring Cloud (Consul) microservice backed by MySQL (MyBatis + ShardingSphere), Redis, and Kafka. Logs captured from 3 servers on 2026-04-30. ## STRUCTURE ``` 日志分析/ ├── 10.0.22.207/ # Server 207, collected 17:11 │ └── 202604301711/ │ └── logs-207/ │ ├── elevator-app.log (116K lines, 16MB) │ └── elevator-app-probe.log (15K lines, 3MB) ├── 10.0.22.208/ # Server 208, collected 17:12 │ └── 202604301712/ │ └── logs/ │ ├── elevator-app.log (198K lines, 31MB) │ └── elevator-app-probe.log (14K lines, 2.9MB) └── 10.0.22.209/ # Server 209, collected 17:13 └── 202604301713/ └── logs/ ├── elevator-app.log (215K lines, 31MB) └── elevator-app-probe.log (5.6K lines, 1.1MB) ``` **Naming convention**: `{IP}/{YYYYMMDDHHMM}/logs[-N]/` — IP-based server identification with collection timestamp. Server 207 uses `logs-207` subdirectory (non-standard naming, probable manual renaming). ## WHERE TO LOOK | Task | Location | Notes | |------|----------|-------| | Application startup / bootstrap | `elevator-app.log` lines ~1-100 | Spring Boot startup, profile activation, bean registration | | Face recognition events | `elevator-app.log` grep `PERSON_RECORD_UPLOAD` | Person entry/exit with face match scores | | Door open events | `elevator-app.log` grep `OPENDOOR_RECORD_UPLOAD` | Door access records with face/token type | | Database errors | `elevator-app.log` grep `ERROR` | ~4,200 total ERRORs across all servers | | PERSON_LABEL_IDS truncation | `elevator-app.log` grep `Data too long for column` | ~2,200 occurrences — primary blocker | | Service discovery / health | `elevator-app-probe.log` | Consul registration, config probes, ribbon status | | Elevator dispatch failures | `elevator-app.log` grep `派梯记录推送失败` | Elevator record send failures | ## TECH STACK (inferred from logs) | Component | Evidence | |-----------|----------| | Java / Spring Boot | `ElevatorApplication`, `AnnotationConfigEmbeddedWebApplicationContext` | | Tomcat Embedded | `TomcatEmbeddedServletContainer: Tomcat started on port 16112` | | Spring Cloud Consul | `ConsulServiceRegistry`, `spring.cloud.consul.host` | | MySQL + MyBatis | `AcsRecogRecordMapper`, `it_acs_recog_record`, `SqlSessionTemplate` | | ShardingSphere | `ShardingJDBC` references in log | | Kafka | Kafka consumer/producer log entries | | Redis | Dependency references in bean wiring logs | | Spring Cloud Feign | `AcsFeignConfiguration`, Feign client beans | ## KEY ERROR PATTERNS ### PERSON_LABEL_IDS truncation (2,200+ occurrences) ``` MySQL Data truncation: Data too long for column 'PERSON_LABEL_IDS' at row 1 → table: it_acs_recog_record → source: AcsRecogRecordDaoImpl.add() → AcsRecogRecordMapper.add → impact: recognition records with many label IDs fail to persist → suggestion: increase column size (VARCHAR → TEXT) or normalize into junction table ``` ### Recognition record save failures ``` c.c.elevator.record.impl.AcsRecogRecordDaoImpl:40 - 保存识别记录失败 → same root cause (PERSON_LABEL_IDS truncation) ``` ### Elevator dispatch failures ``` cn.cloudwalk.elevator.task.ElevatorRecordSendTask:134 - 派梯记录推送失败 → ~468 occurrences across all servers → "失败原因是:{}" — error message is empty, root cause masked ``` ## EVENT TYPES OBSERVED | Event Type | Handler | Description | |------------|---------|-------------| | `PERSON_RECORD_UPLOAD` | `PersonRecordEventHandler` | Face capture → recognition → person record | | `OPENDOOR_RECORD_UPLOAD` | `OpenDoorRecordEventHandler` | Door access granted/denied record | ## SERVER-SPECIFIC NOTES - **10.0.22.207** — appears to have restarted (2 Tomcat startups in log). Profile: `access-control` - **10.0.22.208** — device: `1F高区闸机-右出-134-新`, threshold: 60.0 - **10.0.22.209** — device: `B1F监控中心`, threshold: 0.9 (much more permissive than 208) ## COMMANDS ```bash # Error count per server grep -c "ERROR" */20260430*/logs*/elevator-app.log # Top error types across all servers grep -h "ERROR" */20260430*/logs*/elevator-app.log | \ sed 's/\[.*\] \[.*\] ERROR //' | sort | uniq -c | sort -rn | head -20 # Extract all PERSON_LABEL_IDS failures grep "Data too long for column 'PERSON_LABEL_IDS'" */20260430*/logs*/elevator-app.log ``` ## NOTES - All logs are from 2026-04-30, collected in ~1-hour windows per server - `.DS_Store` files present in every directory — macOS artifacts, safe to ignore - No code, configs, tests, or build scripts exist in this workspace — this is a data directory only - Server 207 subdirectory named `logs-207` instead of `logs` (deviation from 208/209 pattern)