当前位置: 首页 > news >正文

ssm框架web项目配置全局异常处理

在项目的资源文件目录中添加log4j.properties。

比如:

log4j.rootLogger = INFO,stdout,D,E

###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

###
log4j.appender.D = org.apache.log4j.RollingFileAppender
log4j.appender.D.File = logs/serverdebug.log
log4j.appender.D.MaxFileSize=1024KB
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

###
log4j.appender.E = org.apache.log4j.RollingFileAppender
log4j.appender.E.File =logs/servererror.log 
log4j.appender.D.MaxFileSize=1024KB
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout

log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

编写全局异常处理类

public class GlobalExceptionResolver implements HandlerExceptionResolver {

private static final Logger LOGGER = LoggerFactory.getLogger(GlobalExceptionResolver.class);

@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) {
// 异常打印到控制台
ex.printStackTrace();
// 异常写入日志
LOGGER.debug("测试日志");
LOGGER.info("异常记录");
LOGGER.error("系统异常", ex);
// 发邮件,发短信
// 使用jmail工具包
// 使用第三方的webservice发送短信
// 显示错误页
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("error/exception");
return modelAndView;
}


}

在springmvc.xml配置文件中装在异常处理类。

<bean class="com.xxx.xxx.xxx.GlobalExceptionResolver"></bean>

在方法中添加异常,测试。

相关文章:

  • ActiveMQ
  • 删除数据库重复记录
  • session共享问题
  • springmvc中ajax响应json报406错误的两种原因
  • 数据库切片
  • tomcat热部署
  • c++
  • linux系统编程
  • proc*c/c++简介
  • [one_demo_14]一个简单的easyui的demo
  • ztree
  • PowerDesigner
  • POI简单介绍
  • shiro
  • ehcache
  • [译] 怎样写一个基础的编译器
  • 【面试系列】之二:关于js原型
  • 10个确保微服务与容器安全的最佳实践
  • Java 内存分配及垃圾回收机制初探
  • Magento 1.x 中文订单打印乱码
  • node.js
  • Selenium实战教程系列(二)---元素定位
  • 机器学习学习笔记一
  • 坑!为什么View.startAnimation不起作用?
  • 马上搞懂 GeoJSON
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 批量截取pdf文件
  • 如何实现 font-size 的响应式
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • PostgreSQL之连接数修改
  • $.each()与$(selector).each()
  • (1)Android开发优化---------UI优化
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (过滤器)Filter和(监听器)listener
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • ******之网络***——物理***
  • ***原理与防范
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .Net FrameWork总结
  • .NET Micro Framework 4.2 beta 源码探析
  • .net wcf memory gates checking failed
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .Net接口调试与案例
  • .net实现客户区延伸至至非客户区
  • .Net组件程序设计之线程、并发管理(一)
  • /etc/skel 目录作用
  • ::
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [ 转载 ] SharePoint 资料
  • [C/C++随笔] char与unsigned char区别
  • [C++数据结构](22)哈希表与unordered_set,unordered_map实现
  • [CLickhouse] 学习小计
  • [Contiki系列论文之2]WSN的自适应通信架构
  • [CTF]2022美团CTF WEB WP