调试
本文汇总 日常排障 常用手段:看日志、改本地配置、用 HTTP 客户端打接口、微信回调路径说明。端口与启动方式见 本地 / Docker 部署 与 快速入门。
端口速查
| 服务 | 典型端口 | 说明 |
|---|---|---|
| ecshopx-java HTTP API | 18080 | server.port;API 基址 http://localhost:18080/api/ |
| XXL-JOB Admin(Docker Compose) | 8080 | http://localhost:8080/xxl-job-admin(admin / 123456) |
| XXL-JOB Admin(本地独立部署) | 9080 | application-local.properties 中 xxl.job.admin.addresses=http://127.0.0.1:9080/xxl-job-admin |
| XXL-JOB Executor | 19999 | 随应用注册,供 Admin 回调 |
1. 查看应用日志
Docker Compose
bash
cd ecshopx-java
docker compose logs -f ecshopx-java仅看最近 200 行:
bash
docker compose logs --tail=200 ecshopx-java本地 logs/ 目录
仓库根目录约定运行时日志目录:
text
ecshopx-java/logs/
├── ecshopx.out # 后台 nohup 启动时的标准输出
└── xxl-job/ # XXL-JOB 执行器日志(xxl.job.executor.logpath)- Compose /
spring-boot:run前台运行时,主日志多在 终端;需要落盘时可重定向或使用nohup后台启动。 - 定时任务失败时,除应用日志外应检查
logs/xxl-job/与 XXL-JOB Admin 控制台(8080 或 9080)。
MyBatis SQL 调试
application-local.properties 默认开启:
properties
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl本地排障时可在控制台看到 SQL;提交前勿将含敏感数据的完整 SQL 日志贴到公开渠道。生产环境应关闭或改为采样。
2. 本地配置:application-local.properties
路径:
text
ecshopx-bootstrap/src/main/resources/application-local.properties常用本地启动:
bash
cd ecshopx-java
./mvnw -pl ecshopx-bootstrap -am spring-boot:run \
-Dspring-boot.run.profiles=local排障时经常改动的项:
| 配置键 | 用途 |
|---|---|
spring.datasource.* | MySQL 连接 |
spring.data.redis.* / ecshopx.redis.* | Redis 多逻辑库 |
JWT_SECRET / ecshopx.h5.jwt.* | 运营端 / H5 JWT |
xxl.job.admin.addresses | 本地 Admin 地址(9080)vs Compose(容器内 8080) |
ecshopx.storage.* | 对象存储驱动与密钥(勿提交真实密钥) |
ecshopx.wechat.open.* | 微信开放平台组件配置 |
完整键说明见 配置与环境变量。
注意:
spring.flyway.enabled=false,数据库结构变更用bin/make-migration,避免启动误改库(见 数据库快速入门)。
3. 远程调试(可选)
JVM 监听 5005,IDE 附加 Remote JVM Debug:
bash
./mvnw -pl ecshopx-bootstrap spring-boot:run \
-Dspring-boot.run.profiles=local \
-Dspring-boot.run.jvmArguments="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005"4. 用 curl 验证 /api/
应用监听 18080 后,先确认进程与端口:
bash
curl -sS -o /dev/null -w "%{http_code}\n" http://localhost:18080/api/业务接口需带正确路径与鉴权。示例(路径来自真实 Controller):
bash
# C 端商品列表(一般无需运营 JWT)
curl -sS "http://localhost:18080/api/v1/h5app/wxapp/goods/items?page=1&page_size=10"
# 管理端商品列表(需 @AdminAuth Bearer token)
curl -sS -H "Authorization: Bearer <operator_jwt>" \
"http://localhost:18080/api/v1/goods/items?page=1&page_size=10"演示账号:admin / Shopex123(业务库演示数据)。获取 JWT 的具体登录接口以运营端认证流程为准。
更多端到端示例见 快速入门。
5. 微信回调:/wechatAuth/
对外路径前缀(见 架构说明):
| 路径 | 用途 |
|---|---|
http://localhost:18080/wechatAuth/ | 微信相关回调根路径 |
/wechatAuth/callback | 微信开放平台消息与授权事件(WechatOpenPlatformMessageCallbackController) |
本地调试微信回调通常需要 公网可达 URL(内网穿透或测试环境域名)。配置项示例:
properties
ecshopx.payment.wechat.notify-url=http://127.0.0.1/wechatAuth/wxpay/notify生产须在网关 / Nginx 将 /wechatAuth/ 反代到应用 18080,并与微信后台配置的授权回调域一致。
6. Sentry(可选)
当前工程 未内置 Sentry SDK(无 sentry 依赖)。若需错误聚合,可按运维规范自行集成 Sentry Java SDK 或沿用日志采集方案;见 架构说明。
7. 常见问题速查
| 现象 | 建议 |
|---|---|
| 连接 MySQL / Redis 失败 | 核对 application-local.properties 与中间件是否启动(Compose 或本机) |
| 401 / 403 | 检查 JWT、@AdminAuth / @FrontAuth 与请求头 |
| XXL-JOB 不执行 | Admin 地址端口(8080 vs 9080)、Executor 19999、Admin 控制台任务是否注册 |
| 接口 404 | rg @RequestMapping 确认真实路径;注意 admin / front 前缀不同 |
