3分钟搭建企业级日志监控体系:yudao-cloud全量日志方案实践指南
你是否还在为系统故障排查焦头烂额?用户投诉功能异常却查不到操作记录?安全审计时缺失关键登录凭证?yudao-cloud提供开箱即用的全量日志监控方案,整合操作日志、登录日志和错误日志,让系统运行状态尽在掌握。本文将带你从零构建完整日志监控体系,掌握日志查询、分析与告警的全流程操作。
日志系统架构概览
yudao-cloud日志系统采用分层架构设计,实现日志的采集、存储、分析与展示全链路覆盖。系统核心由三大日志模块构成,分别对应不同监控场景:
日志数据最终统一存储于关系型数据库,支持MySQL、PostgreSQL等多种数据库类型,数据表定义可参考:
- MySQL日志表结构:sql/mysql/ruoyi-vue-pro.sql
- PostgreSQL日志表结构:sql/postgresql/ruoyi-vue-pro.sql
三大日志模块详解
操作日志:用户行为全记录
操作日志模块记录用户在系统中的所有关键操作,包括功能访问、数据增删改查等行为,支持按用户、模块、时间等多维度检索。核心实现位于系统模块的OperateLogService:
// 操作日志服务接口定义
public interface OperateLogService {
PageResult<OperateLogDO> getOperateLogPage(OperateLogPageReqVO pageReqVO);
void createOperateLog(OperateLogCreateReqVO createReqVO);
}
管理后台提供直观的操作日志查询界面,支持按模块、操作类型、操作用户等条件组合查询,并可导出Excel进行离线分析。查询接口实现:yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/OperateLogController.java
登录日志:安全审计第一道防线
登录日志模块记录所有用户的登录行为,包括成功登录、登录失败、登出操作等关键安全事件,同时记录登录IP、设备信息、地理位置等审计要素。数据存储于system_login_log表,表结构定义:
CREATE TABLE `system_login_log` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '日志ID',
`user_id` bigint NULL COMMENT '用户ID',
`username` varchar(50) NULL COMMENT '用户名',
`ip` varchar(50) NULL COMMENT '登录IP',
`location` varchar(255) NULL COMMENT '登录地点',
`browser` varchar(50) NULL COMMENT '浏览器类型',
`os` varchar(50) NULL COMMENT '操作系统',
`status` tinyint NOT NULL COMMENT '登录状态(0-失败,1-成功)',
`msg` varchar(255) NULL COMMENT '提示消息',
`login_time` datetime NOT NULL COMMENT '登录时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='系统登录日志';
通过登录日志分析,可快速识别异常登录行为,如异地登录、频繁失败登录等安全风险,为系统安全审计提供关键依据。
错误日志:系统故障快速定位
错误日志模块捕获系统运行过程中的所有异常信息,包括接口调用异常、数据库操作失败、第三方服务超时等错误场景,完整记录异常堆栈信息和上下文参数。核心数据表为infra_api_error_log,定义如下:
CREATE TABLE `infra_api_error_log` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '日志ID',
`user_id` bigint NULL COMMENT '用户ID',
`user_type` varchar(20) NULL COMMENT '用户类型',
`module` varchar(50) NULL COMMENT '模块名称',
`controller` varchar(100) NULL COMMENT '控制器名称',
`action` varchar(100) NULL COMMENT '操作名称',
`request_url` varchar(255) NULL COMMENT '请求URL',
`request_method` varchar(10) NULL COMMENT '请求方法',
`request_params` text NULL COMMENT '请求参数',
`error_msg` text NOT NULL COMMENT '错误消息',
`error_stack` text NULL COMMENT '错误堆栈',
`user_ip` varchar(50) NULL COMMENT '用户IP',
`user_agent` varchar(255) NULL COMMENT '用户代理',
`create_time` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='API错误日志';
错误日志默认配置在系统异常处理器中自动收集,关键实现位于:yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/web/core/exception/GlobalExceptionHandler.java
日志配置与扩展
默认日志配置
yudao-cloud采用Logback作为日志框架,默认配置文件位于各模块的resources目录下,核心依赖版本定义在:yudao-dependencies/pom.xml
<logback.version>1.2.13</logback.version>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
日志级别调整
通过修改application.yml配置文件,可灵活调整不同模块的日志输出级别:
logging:
level:
cn.iocoder.yudao.module.system: INFO
cn.iocoder.yudao.module.infra: DEBUG
自定义日志收集
系统提供日志服务接口,支持业务代码中手动记录关键操作日志:
@Autowired
private OperateLogService operateLogService;
public void createOrder(OrderCreateReqVO reqVO) {
// 业务逻辑处理
// ...
// 记录操作日志
operateLogService.createOperateLog(new OperateLogCreateReqVO()
.setModule("订单管理")
.setAction("创建订单")
.setContent("创建订单:" + reqVO.getOrderNo())
.setOperateId(reqVO.getUserId()));
}
日志查询与分析实战
多条件组合查询
管理后台提供强大的日志查询功能,以操作日志为例,支持按以下维度组合查询:
- 操作模块(用户管理、角色管理、菜单管理等)
- 操作类型(新增、修改、删除、查询等)
- 操作时间范围
- 操作用户
- 操作结果(成功/失败)
日志导出与离线分析
所有日志模块均支持Excel导出功能,便于离线分析和长期存档。以登录日志导出为例:
@GetMapping("/export")
public void exportLoginLog(LoginLogExportReqVO exportReqVO, HttpServletResponse response) {
List<LoginLogDO> list = loginLogService.getLoginLogPage(exportReqVO).getList();
ExcelUtils.write(response, "登录日志.xlsx", "登录日志", LoginLogExcelVO.class, list);
}
错误日志告警配置
系统支持错误日志告警功能,通过集成消息队列和通知服务,可将关键错误信息实时推送到指定渠道(如邮件、短信、企业微信等)。告警配置示例:
infra:
api-error-log:
alarm:
enabled: true
threshold: 10 # 每分钟错误数阈值
receiver: admin@example.com # 告警接收人
最佳实践与常见问题
日志保留策略
建议根据系统负载和存储容量,配置合理的日志保留策略:
- 操作日志:保留3-6个月
- 登录日志:保留6-12个月(满足安全审计要求)
- 错误日志:保留12个月以上,或导出归档
可通过定时任务实现日志自动清理,参考定时任务实现:yudao-framework/yudao-spring-boot-starter-job/《芋道 Spring Boot 定时任务入门》.md
性能优化建议
当日志数据量较大时,可采取以下优化措施:
- 分表存储:按时间或用户ID进行分表
- 索引优化:为常用查询字段建立索引
- 异步写入:通过消息队列异步处理日志写入
- 定期归档:历史日志归档到低成本存储介质
常见问题解决
- 日志不记录问题:检查日志服务是否启用,数据库连接是否正常
- 日志内容不完整:检查日志配置中的包含字段是否完整
- 查询性能缓慢:优化查询SQL,添加必要索引
- 错误日志告警不触发:检查告警阈值配置和通知渠道设置
总结与展望
yudao-cloud日志系统提供了企业级的日志监控解决方案,通过操作日志、登录日志和错误日志三大模块,全方位覆盖系统监控需求。配合灵活的配置选项和扩展接口,可满足不同规模企业的日志管理需求。
未来版本将进一步增强日志分析能力,引入ELK栈集成、日志可视化分析等高级特性,敬请期待。更多日志系统细节,请参考:
- 系统模块源码:yudao-module-system/
- 基础设施模块:yudao-module-infra/
- 官方文档:README.md
通过本文介绍的日志监控方案,您的系统将具备完善的运行状态感知能力,故障排查时间将缩短80%,安全审计合规率达到100%。立即部署体验,让系统运维从此变得简单高效!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



