调试与日志定位
本篇介绍 Forge 后端本地调试配置和常见日志定位方法,帮助你快速排查问题。
IDEA 远程调试
1. 启动后端调试模式
bash
cd forge-server/forge-admin-server
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"2. IDEA 配置 Remote Debug
Run → Edit Configurations → + → Remote JVM Debug- Host:
localhost,Port:5005 - 点击 Debug 按钮连接
3. 设置断点
在 IDEA 中直接点击代码行号左侧设置断点,当代码执行到断点时会自动暂停。
日志路径
| 日志类型 | 路径 |
|---|---|
| 应用日志 | forge-server/forge-admin-server/logs/ |
| SQL 日志 | 终端输出(开发环境) |
| 前端日志 | 浏览器控制台 + 终端 pnpm dev 输出 |
日志级别调整
在 application-dev.yml 中调整日志级别:
yaml
logging:
level:
root: INFO
com.mdframe.forge: DEBUG # 项目代码 DEBUG
com.baomidou.mybatisplus: DEBUG # MyBatis-Plus SQL 日志
org.springframework.web: INFO关键日志输出点
| 模块 | 日志内容 | 搜索关键词 |
|---|---|---|
| 认证 | 登录/登出/Token 刷新 | SaToken |
| SQL | 执行的 SQL 语句与参数 | Preparing、Parameters |
| 租户 | 租户 ID 过滤 | TenantLine |
| 数据权限 | SQL 改写 | DataScope |
| 全局异常 | 未捕获异常堆栈 | GlobalExceptionHandler |
| 操作日志 | 业务操作记录 | OperationLog |
常见问题排查
接口返回 401
检查 → SaTokenInterceptor 是否拦截了该路径
检查 → Authorization 请求头是否携带 Bearer Token
检查 → Token 是否过期接口返回 403
检查 → @SaCheckPermission 注解的权限标识是否与数据库配置一致
检查 → 当前用户角色是否分配了对应权限查询结果为空但数据存在
检查 → tenant_id 是否正确(数据 tenant_id = 0 不可见)
检查 → del_flag = 0 条件是否正确
检查 → 数据权限是否过滤了数据前端请求报跨域
检查 → Vite 代理配置(vite.config.ts 中 proxy)
检查 → 后端是否配置 CORS
检查 → 请求路径是否正确(前端 /api 前缀代理到后端)SQL 日志开启
开发环境开启 SQL 日志,查看实际执行的 SQL:
yaml
spring:
datasource:
dynamic:
datasource:
master:
log: true # 开启 SQL 日志开启后控制台会输出:
==> Preparing: SELECT id, username FROM sys_user WHERE del_flag = 0 AND tenant_id = ?
==> Parameters: 1(Long)