日期:2026.7.8
今日任务
- 对照着Qoderwork刷算法题
- 制定 title 命名规范:统一为"模块名+操作描述"格式,如"用户管理-列表查询"、"设备管理-新增"
- 修改系统模块 Controller 的 title:
SysUserController.java:将 12 处 title 统一为"用户管理-XXX"格式
SysRoleController.java:将 7 处 title 统一为"角色管理-XXX"格式
SysMenuController.java:将 11 处 title 统一为"菜单管理-XXX"格式
- 修改设备模块 Controller 的 title:
InstrumentsController.java:将 24 处 title 统一为"设备管理-XXX"格式
InsTypeController.java:将 11 处 title 统一为"设备类型-XXX"格式
InsPointController.java:将 11 处 title 统一为"测点管理-XXX"格式
InsLayoutController.java:将 7 处 title 统一为"设备布局-XXX"格式
- 修改报警模块 Controller 的 title:
InsAlarmLogController.java:7 处,统一为"报警日志-XXX"
InsAlarmFalseController.java:9 处,统一为"误报管理-XXX"
InsAlarmEventCenterController.java:4 处,统一为"报警事件-XXX"
InsAlarmRuleSnapshotController.java:3 处,统一为"报警规则-XXX"
- 修改网关模块 Controller 的 title:
GatewayOnlineLogController.java:1 处,统一为"网关日志-导出"
GatewayCommandExecutionLogController.java:1 处,统一为"网关指令日志-XXX"
- 修改通信模块 Controller 的 title:
MqttController.java:6 处,统一为"MQTT通信-XXX"
SerialPortController.java:14 处,统一为"串口通信-XXX"
SerialPortAlarmBindingConfigController.java:7 处,统一为"串口报警绑定-XXX"
SerialPortCommandConfigController.java:7 处,统一为"串口指令配置-XXX"
SerialPortProfileController.java:7 处,统一为"串口配置-XXX"
- 修改其他模块 Controller 的 title(剩余的约 30 处)
- 检查所有使用 BusinessTypeEnum.OTHER 的接口,判断是否应该改为更精确的类型,例如:
MqttController 中 "MQTT消息视图清空" 应改为 DELETE 而非 OTHER
"MQTT主题订阅/取消订阅" 可以保持 OTHER(确实属于特殊操作)
- 检查所有使用 BusinessTypeEnum.SELECT 的接口,确认是否真的是查询操作,有没有把增删改误标为 SELECT 的情况
- 检查 "新增或修改" 类接口的 businessType,确认是否统一用 UPDATE 还是 INSERT
- 为查询大数据量的接口设置 isSaveResponseData = false,避免日志表膨胀,例如:
设备列表分页查询(返回数据量大)
报警日志分页查询
操作日志分页查询
- 为文件上传/下载接口设置合理的 isSaveRequestData 和 isSaveResponseData
- 为敏感操作(重置密码、强制退出等)确认 isSaveRequestData = true 确保审计完整
- 为以下 Controller 的所有接口补充 @Log 注解(这些是确认没有 @Log 的关键业务 Controller):
InsDataHistoryController.java:设备历史数据查询,title="设备历史数据-XXX"
InstrumentsControlController.java:设备控制操作,title="设备控制-XXX",businessType 用 OPERATING
DeviceRealtimeController.java:实时数据查询,title="实时数据-XXX"
DeviceLinkDiagnosisController.java:链路诊断,title="链路诊断-XXX"
DataQualityDashboardController.java:数据质量看板,title="数据质量-XXX"
- 为网关模块缺失 @Log 的 Controller 补充注解:
GatewayInfoController.java:title="网关管理-XXX"
GatewayConfigController.java:title="网关配置-XXX"
GatewayDeviceRelationController.java:title="网关设备关联-XXX"
GatewayCommandFieldController.java:title="网关指令字段-XXX"
GatewayCommandTemplateController.java:title="网关指令模板-XXX"
- 为摄像头模块缺失 @Log 的 Controller 补充注解:
AvCameraInstrumentsController.java:title="摄像头管理-XXX"
AvCameraCfgController.java:title="摄像头配置-XXX"
- 为通信模块缺失 @Log 的 Controller 补充注解:
ProtocolTemplateController.java:title="协议模板-XXX"
SysMessageController.java:title="消息管理-XXX"
SmsController.java:title="短信通知-XXX",businessType 用 SEND_DATA
WeChatController.java:title="微信通知-XXX",businessType 用 SEND_DATA
- 为 AI 模块缺失 @Log 的 Controller 补充注解:
AiSmartAlarmController.java:title="AI智能报警-XXX"
AiChatController.java:title="AI对话-XXX"
AiModelConfigController.java:title="AI模型配置-XXX"
- 整理所有修改的代码,形成代码变更清单
- 撰写《操作日志注解使用规范》文档,包括:
title 命名规范("模块名-操作描述")
businessType 选择指南(什么操作用什么枚举)
isSaveRequestData/isSaveResponseData 使用建议
新增接口 @Log 注解添加模板
今日完成
- 完成多个业务模块 Controller 的
title命名规范统一,覆盖系统管理、设备管理、报警管理、网关管理、通信管理及其他业务模块,共涉及 180+ 处接口 ,统一采用 "模块名-操作描述" 的命名格式,提高日志可读性和维护性。 - 全面检查项目中
BusinessTypeEnum的使用情况,对误用OTHER、SELECT等枚举的接口进行修正,使业务操作类型与实际功能保持一致,提高日志统计及审计准确性。 - 对新增、修改等业务接口进行了统一规范,保证同类接口使用一致的业务类型枚举。
- 针对分页查询、历史数据查询、操作日志查询等大数据量接口,合理配置
isSaveResponseData=false,减少日志表冗余数据存储,降低数据库存储压力。 - 对文件上传、下载以及敏感操作接口(如重置密码、强制退出等)重新评估日志记录策略,合理设置请求参数及响应数据保存配置,提高系统审计能力。
- 为多个缺失
@Log注解的重要业务 Controller 补充日志埋点,覆盖设备管理、网关管理、通信管理、摄像头管理、AI 模块等核心业务,提高系统操作日志覆盖率。 - 整理全部代码修改内容,形成完整的代码变更清单。
- 编写《操作日志注解使用规范》文档,统一团队后续开发过程中
@Log注解的使用标准。
学到的新知识
1. 企业项目中的操作日志不仅用于记录,更承担审计职责
企业级项目中的 @Log 注解不仅仅是为了方便开发人员查看日志,更重要的是满足系统的审计需求。合理记录操作人、操作时间、请求参数、操作类型等信息,可以帮助后续定位问题、分析用户行为以及满足安全合规要求。
2. 一个优秀的日志系统需要统一规范
今天最大的收获不是修改代码,而是理解了为什么需要制定统一规范。
例如:
- title 统一采用 "模块名-操作描述"
- BusinessType 使用统一标准
- 查询接口统一标记为 SELECT
- 删除接口统一标记 DELETE
- 导出统一 EXPORT
统一规范之后:
- 日志查询更加直观
- 后续统计分析更加方便
- 新人开发不会出现命名混乱的问题
3. 日志并不是记录得越多越好
今天了解到:
很多分页接口、历史数据接口返回的数据量非常大。
如果仍然保存完整 Response:
- 日志表会快速膨胀
- 数据库存储压力增大
- 查询日志效率下降
因此对于大数据量查询,应合理关闭
plain
isSaveResponseData = false
这是一种典型的企业级性能优化思想。
4. BusinessTypeEnum 的设计思想
以前认为只是一个普通枚举。
今天了解到它实际上承担着:
- 日志分类
- 操作统计
- 权限审计
- 数据分析
因此不同操作应该对应不同业务类型,例如:
- INSERT
- UPDATE
- DELETE
- EXPORT
- IMPORT
- SEND_DATA
- OPERATING
- SELECT
而不是全部使用 OTHER。
今日Bug
Bug:项目中部分接口存在日志注解配置不规范的问题,例如:
BusinessType使用错误;- 查询接口误标为
OTHER; - 特殊操作未使用更准确的业务类型;
- 部分核心 Controller 缺少
@Log注解。
原因:
随着项目不断迭代,不同开发人员的编码习惯不同,缺乏统一的日志规范,导致日志注解配置存在不一致的情况。
解决:逐个检查所有 Controller,对日志注解进行统一规范,包括:
- 统一 title 命名
- 修正 BusinessType
- 补充缺失日志
- 优化请求、响应数据保存策略
总结:
企业项目中的代码规范不仅体现在编码风格,更体现在统一的设计规范上。提前制定规范,可以有效降低后续维护成本,提高整个团队的开发效率。
今日技术总结
今天主要围绕企业级项目中的 操作日志设计 进行了深入学习,对 @Log 注解的使用有了更加系统的认识。
总结下来,一套优秀的操作日志需要重点考虑以下几个方面:
- 统一命名规范 :所有接口采用统一的
title命名格式,保证日志易于检索和统计。 - 合理选择业务类型 :根据业务行为选择合适的
BusinessTypeEnum,提高日志分析价值。 - 控制日志存储粒度:针对大数据量接口关闭响应数据保存,兼顾系统性能和审计需求。
- 完善日志覆盖范围 :核心业务接口应全部补充
@Log注解,确保关键操作均可追踪。 - 形成团队开发规范:通过编写《操作日志注解使用规范》文档,将个人实践沉淀为团队规范,提升项目整体代码质量和一致性。
可写进简历
- 参与企业级物联网平台操作日志模块规范化建设,统一 180+ 个接口 的操作日志命名规范及业务类型配置,提高日志一致性和可维护性。
- 完善多个核心业务模块(设备管理、报警管理、网关管理、通信管理、AI 模块等)的
@Log日志埋点,实现关键业务操作全链路日志覆盖。 - 优化操作日志存储策略,针对大数据量查询接口关闭响应数据记录,降低日志表存储压力,提升系统运行效率。
- 编写《操作日志注解使用规范》文档,沉淀团队开发规范,为后续功能开发提供统一标准。
STAR素材
Situation:
项目中大量 Controller 的操作日志注解配置不统一,不同模块存在命名混乱、业务类型使用不规范、部分接口缺失日志等问题,影响日志查询、统计分析以及系统审计。
Task:
负责统一整个项目的操作日志规范,完善日志埋点,并形成团队统一的开发规范。
Action:
- 制定统一的
title命名规则; - 全面检查并修正
BusinessTypeEnum使用; - 优化请求、响应数据保存策略;
- 为多个核心业务模块补充
@Log注解; - 编写《操作日志注解使用规范》文档,沉淀最佳实践。
Result:
完成全项目 180+ 个接口 的日志规范化改造,实现核心业务日志全覆盖,提高了日志可读性、系统审计能力和团队开发一致性,同时形成了可持续复用的日志开发规范。
今日成长一句话(个人复盘)
今天最大的收获不是完成了大量接口的修改,而是理解了企业级开发中的"规范"比"功能"更重要。统一的日志设计能够显著提升系统的可维护性、可审计性和团队协作效率,这也是从"会写代码"迈向"会做项目"的重要一步。