恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

SpringBoot 全局异常处理与日志记录——统一规范实战

  • 首页
  • 资讯中心
  • /
  • SpringBoot 全局异常处理与日志记录——统一规范实战

相关资讯

数据湖解决方案 2026/8/2 17:04:40
终极指南:如何在Mac上实现Windows风格的Alt+Tab窗口切换 2026/8/2 17:04:46
15分钟搞定黑苹果EFI:OpCore-Simplify图形化工具终极指南 2026/8/2 17:04:43

最新资讯

Zotero免费突破300MB限制:ZotFile+坚果云实现文献附件无限同步
构建通用爬虫系统:模块化架构与代理可用性检测实践
PDF处理核心技术解析:从编辑、OCR到电子签名的全链路实践指南
多智能体LLM框架:基于执行反馈的自主软件工程实践
ZotFile插件突破Zotero 300M限制,实现文献PDF无限存储与多端同步
JMeter录制脚本全攻略:从原理到实战,打造高效性能测试脚本

今日推荐

LabVIEW异步调用实战:从原理到生产者消费者模式,解决界面卡顿与并行处理难题
LabVIEW异步调用实战:解决界面卡顿与并行处理难题
飞书局域网文件传输实战:3种方案实现高速点对点传输

本周热门

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码
【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码
隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

SpringBoot 全局异常处理与日志记录——统一规范实战

发布时间:2026/8/17 9:30:43
SpringBoot 全局异常处理与日志记录——统一规范实战 线上系统出问题不可怕可怕的是出了问题找不到原因。统一的异常处理和规范的日志记录是任何生产系统必备的基础设施。一、全局异常处理1. 自定义业务异常publicclassBusinessExceptionextendsRuntimeException{privateintcode;privateStringmessage;publicBusinessException(intcode,Stringmessage){super(message);this.codecode;this.messagemessage;}// 常用错误码publicstaticBusinessExceptionnotFound(Stringmsg){returnnewBusinessException(404,msg);}publicstaticBusinessExceptionbadRequest(Stringmsg){returnnewBusinessException(400,msg);}publicstaticBusinessExceptionunauthorized(Stringmsg){returnnewBusinessException(401,msg);}publicstaticBusinessExceptionforbidden(Stringmsg){returnnewBusinessException(403,msg);}}2. 全局异常处理器RestControllerAdvicepublicclassGlobalExceptionHandler{privatestaticfinalLoggerlogLoggerFactory.getLogger(GlobalExceptionHandler.class);ExceptionHandler(BusinessException.class)publicResultVO?handleBusiness(BusinessExceptione){log.warn(业务异常: code{}, msg{},e.getCode(),e.getMessage());returnResultVO.error(e.getCode(),e.getMessage());}ExceptionHandler(MethodArgumentNotValidException.class)publicResultVO?handleValidation(MethodArgumentNotValidExceptione){Stringmsge.getBindingResult().getFieldErrors().stream().map(FieldError::getDefaultMessage).collect(Collectors.joining());returnResultVO.error(400,msg);}ExceptionHandler(ConstraintViolationException.class)publicResultVO?handleConstraint(ConstraintViolationExceptione){Stringmsge.getConstraintViolations().stream().map(ConstraintViolation::getMessage).collect(Collectors.joining());returnResultVO.error(400,msg);}ExceptionHandler(NoHandlerFoundException.class)publicResultVO?handle404(NoHandlerFoundExceptione){returnResultVO.error(404,接口不存在: e.getRequestURL());}ExceptionHandler(Exception.class)publicResultVO?handleOther(Exceptione){log.error(系统异常,e);returnResultVO.error(500,服务器繁忙请稍后重试);}}二、统一日志记录1. 请求日志拦截器ComponentpublicclassLogInterceptorimplementsHandlerInterceptor{privatestaticfinalLoggerlogLoggerFactory.getLogger(LogInterceptor.class);OverridepublicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler){// 记录请求开始时间request.setAttribute(startTime,System.currentTimeMillis());returntrue;}OverridepublicvoidafterCompletion(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler,Exceptionex){longstart(long)request.getAttribute(startTime);longdurationSystem.currentTimeMillis()-start;log.info([{}] {} {} → {} ({}ms),request.getMethod(),request.getRequestURI(),request.getQueryString()!null??request.getQueryString():,response.getStatus(),duration);}}2. 注册拦截器ConfigurationpublicclassWebConfigimplementsWebMvcConfigurer{AutowiredprivateLogInterceptorlogInterceptor;OverridepublicvoidaddInterceptors(InterceptorRegistryregistry){registry.addInterceptor(logInterceptor).addPathPatterns(/api/**);}}3. 日志级别配置logging:level:root:INFOcom.zhang:DEBUGcom.zhang.seckill.mapper:TRACEfile:path:/var/log/appname:${logging.file.path}/app.loglogback:rolling policy:max-history:30max-file-size:100MB三、日志最佳实践// ✅ 正确带参数占位符log.info(用户 {} 创建订单 {},userId,orderNo);// ❌ 错误字符串拼接log.info(用户 userId 创建订单 orderNo);// ✅ 正确包含上下文信息log.warn(支付失败: orderNo{}, amount{}, error{},orderNo,amount,error);// ❌ 错误没信息量的日志log.info(支付失败); 觉得有用的话点赞 关注【张老师技术栈】吧每周更新 Java/Python/爬虫 实战干货不让你白来。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号