struts2全局异常处理及配合log4j进行异常日志记录
来源:互联网 发布:socket长连接 java 编辑:程序博客网 时间:2024/06/05 02:29
在编写代码时除了使用try catch来捕获异常之外,还可以用struts2的声明式异常处理,即在Action中直接抛出异常交给struts2来处理,并且在xml文件中进行相应的配置,如下:
<!--设置全局返回结果 -->
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<!--定义要捕获的异常-->
<global-exception-mappings>
<exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
<action name="login" class="userAction" method="login">
<exception-mapping result="login"exception="com.exceptions.LoginException">
</exception-mapping>
<result name="login">/webPage/exception/login_error.jsp</result>
至于配合log4j记录异常日志是利用struts2中提供的异常拦截器
ExceptionMappingInterceptor,当发生指定异常后,会由它处理,因为这个类有写日志的功能,默认是禁用的,因此直接将其启用即可,如下:
<interceptor-ref name="defaultStack">
<!--覆盖defultStack中的exception设置,启用它的日志功能-->
<param name="exception.logEnabled">true</param>
<param name="exception.logLevel">error</param>
</interceptor-ref>
为了同时将日志信息写入数据库我们如下配置lo4j配置文件
log4j.properties文件配置如下:
#定义根目录日志 ,第一个为日志级别,第二个为输出目的,如:log4j.rootLogger=error,appender1,appender2,...
#下面的配置就是用appender1,appender2, ...作为附加器,如:log4j.appender.console=org.apache.log4j.ConsoleAppender中console就是appender2
log4j.rootLogger=error, database, console
#DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE
###################
# Console Appender
###################
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%p] - %m%n
########################
# JDBC Appender
#######################
log4j.appender.database=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.database.URL=jdbc:mysql://localhost:3306/test
log4j.appender.database.driver=com.mysql.jdbc.Driver
log4j.appender.database.user=root
log4j.appender.database.password=root
log4j.appender.database.sql=insert into errorlog (className,methodName,occurTime,LogLevel,msg) values ('%c%l','%M','%d{yyyy-MM-dd HH:mm:ss}','%p','%m')
log4j.appender.database.layout=org.apache.log4j.PatternLayout
log4j.appender.database.layout.ConversionPattern=%d [%p] - %m%n
#create table errorLog(
#id integer primary key AUTO_INCREMENT comment '日志id',
#className varchar(256) comment '异常类名',
#methodName varchar(64) comment '发生异常所在的方法',
#occurTime DATETIME not null comment '异常发生的时间',
#logLevel varchar(16) not null comment '异常的级别',
#msg text not NULL comment '异常详细信息',
#isRead boolean default false comment '是否已经阅读过',
#isResolve boolean default false comment '是否解决这个错误',
#resoleTime datetime comment '解决时间'
#);
本文转载自:http://www.open-open.com/lib/view/open1381838615098.html
<!--设置全局返回结果 -->
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<!--定义要捕获的异常-->
<global-exception-mappings>
<exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>
<action name="login" class="userAction" method="login">
<exception-mapping result="login"exception="com.exceptions.LoginException">
</exception-mapping>
<result name="login">/webPage/exception/login_error.jsp</result>
</action>
至于配合log4j记录异常日志是利用struts2中提供的异常拦截器
ExceptionMappingInterceptor,当发生指定异常后,会由它处理,因为这个类有写日志的功能,默认是禁用的,因此直接将其启用即可,如下:
<interceptor-ref name="defaultStack">
<!--覆盖defultStack中的exception设置,启用它的日志功能-->
<param name="exception.logEnabled">true</param>
<param name="exception.logLevel">error</param>
</interceptor-ref>
为了同时将日志信息写入数据库我们如下配置lo4j配置文件
log4j.properties文件配置如下:
#定义根目录日志 ,第一个为日志级别,第二个为输出目的,如:log4j.rootLogger=error,appender1,appender2,...
#下面的配置就是用appender1,appender2, ...作为附加器,如:log4j.appender.console=org.apache.log4j.ConsoleAppender中console就是appender2
log4j.rootLogger=error, database, console
#DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE
###################
# Console Appender
###################
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%p] - %m%n
########################
# JDBC Appender
#######################
log4j.appender.database=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.database.URL=jdbc:mysql://localhost:3306/test
log4j.appender.database.driver=com.mysql.jdbc.Driver
log4j.appender.database.user=root
log4j.appender.database.password=root
log4j.appender.database.sql=insert into errorlog (className,methodName,occurTime,LogLevel,msg) values ('%c%l','%M','%d{yyyy-MM-dd HH:mm:ss}','%p','%m')
log4j.appender.database.layout=org.apache.log4j.PatternLayout
log4j.appender.database.layout.ConversionPattern=%d [%p] - %m%n
#create table errorLog(
#id integer primary key AUTO_INCREMENT comment '日志id',
#className varchar(256) comment '异常类名',
#methodName varchar(64) comment '发生异常所在的方法',
#occurTime DATETIME not null comment '异常发生的时间',
#logLevel varchar(16) not null comment '异常的级别',
#msg text not NULL comment '异常详细信息',
#isRead boolean default false comment '是否已经阅读过',
#isResolve boolean default false comment '是否解决这个错误',
#resoleTime datetime comment '解决时间'
#);
本文转载自:http://www.open-open.com/lib/view/open1381838615098.html
0 0
- struts2全局异常处理及配合log4j异常日志记录
- struts2全局异常处理及配合log4j进行异常日志记录
- Struts2配合Log4j打印异常栈信息
- struts2配合log4j打印异常栈信息
- struts2配合log4j打印异常栈信息
- struts2配合log4j打印异常栈信息
- struts2配合log4j打印异常栈信息
- Struts2配合Log4j打印异常栈信息
- Struts2 异常处理 ( jsp记录异常信息到日志 )
- MVC3全局异常处理与异常日志
- struts2配置之全局result及异常处理
- struts2配置之全局result及异常处理
- struts2 全局异常开启日志功能
- Spring-Boot--日志操作【全局异常捕获消息处理☞日志控制台输出+日志文件记录】
- struts2配合log4j打印异常栈信息(转)
- Struts2 -- 全局异常处理(拦截器)
- 全局异常处理器实现系统异常日志记录到数据库
- 4、struts2异常处理及全局异常与结果剖析、struts2模型驱动及分层体系架构
- CSS3垂直时间轴-Demo马航失联
- 黑马程序员-DOM(第四讲)
- Oracle GoldenGate 12c 新特性 Credential Store and USERIDALIAS
- attach和detach
- JAVA API接口提供注意事项
- struts2全局异常处理及配合log4j进行异常日志记录
- 微软今起停止对XP技术支持:影响2亿国内用户
- 最大子矩阵和
- 黑马程序员-DOM(第五讲)
- 【转】Python_使用ElementTree解析xml文件
- 黑马程序员-DOM(第六讲)
- 1002
- 曝N游戏嫩模疑被阔少包养 大尺度自摸照流出
- 黑马程序员-DOM(第七讲下拉菜单-选择城市)