『博客开发日记』之在AOP实现日志输出时对文件上传等进行特殊处理
本文最后更新于 2026年2月10日 晚上
在AOP实现日志输出时对文件上传等进行特殊处理
前言
在之前添加一个AOP进行接口运行时添加日志输出的功能时出现上传头像时,系统抛出 com.alibaba.fastjson.JSONException 异常,导致上传失败
原因
其根本原因在于LogAspect 切面在打印日志时,尝试使用 FastJSON 序列化所有方法参数,但 MultipartFile 对象无法被序列化
FastJSON 在序列化 MultipartFile 时,尝试获取其文件路径,但 MultipartFile 是上传的临时文件,不存在物理路径
解决方法
解决办法就是在 LogAspect 中过滤掉无法序列化的参数类型,如下
MultipartFile:只记录文件名和大小,不序列化整个对象
HttpServletRequest/Response:跳过这些 Servlet 对象
剩下的一些普通参数则正常序列化
1 | |
总结
在使用 AOP 记录日志时,需要注意不是所有对象都能被序列化
如文件上传、流对象、Servlet 对象等需要特殊处理 应该在序列化前进行类型检查和过滤
PS:该系列只做为作者学习开发项目做的笔记用
不一定符合读者来学习,仅供参考
预告
后续会记录博客的开发过程
每次学习会做一份笔记来进行发表
“一花一世界,一叶一菩提”
版权所有 © 2025 云梦泽
欢迎访问我的个人网站:https://hgt12.github.io/
『博客开发日记』之在AOP实现日志输出时对文件上传等进行特殊处理
http://example.com/2026/02/10/『博客开发日记』之在AOP实现日志输出时对文件上传等进行特殊处理/