生活随笔
收集整理的這篇文章主要介紹了
Struts2 控制台不打印异常的解决方案
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Struts2 控制臺不打印異常解決方法
<interceptor-ref name="defaultStack"><param name="exception.logEnabled">true</param><param name="exception.logLevel">error</param>
</interceptor-ref>
?log4j.properties中加下如下配置:
log4j.logger.com.opensymphony.xwork2=WARN
log4j.logger.com.opensymphony.xwork2=ERROR
?
?
?
struts2配合log4j打印異常棧信息
?
關(guān)于配置struts2全局異常后控制臺無法打印異常信息問題
?
Java代碼
<global-results> ????????<result?name="error">/exception/error.jsp</result> ????</global-results> ???? ????<global-exception-mappings> ???????<exception-mapping?exception="java.lang.Exceptions"?result="error"?/> ???????<exception-mapping?result="error"?exception="java.lang.Throwable"></exception-mapping>? ????</global-exception-mappings>??[java]view plaincopy
<global-results>????????<result?name="error">/exception/error.jsp</result>????</global-results>????????<global-exception-mappings>???????<exception-mapping?exception="java.lang.Exceptions"?result="error"?/>???????<exception-mapping?result="error"?exception="java.lang.Throwable"></exception-mapping>?????</global-exception-mappings>???
配置完后,action中不try catch則無法在控制臺打印異常信息。
?
多次嘗試后解決方案如下:
在struts2中的defaultStack攔截器中配置參數(shù)如下
?
Java代碼
<interceptor-ref?name="defaultStack"> ??????<param?name="exception.logEnabled">true</param> ??????<param?name="exception.logLevel">error</param> ??</interceptor-ref>??[java]view plaincopy
<interceptor-ref?name="defaultStack">??????<param?name="exception.logEnabled">true</param>??????<param?name="exception.logLevel">error</param>??</interceptor-ref>???
?再配合log4j中設(shè)置
Java代碼
log4j.logger.com.opensymphony.xwork2=WARN???[java]view plaincopy
log4j.logger.com.opensymphony.xwork2=WARN????或
Java代碼
log4j.logger.com.opensymphony.xwork2=ERROR??[java]view plaincopy
log4j.logger.com.opensymphony.xwork2=ERROR???
即可看到控制臺打印異常信息,當(dāng)然log4j中需要配置控制臺輸出。
?
原理:http://www.opensymphony.com/webwork/api/com/opensymphony/xwork/interceptor/ExceptionMappingInterceptor.html
?
xwork中的ExceptionMappingInterceptor攔截器默認(rèn)將異常打印關(guān)閉了。即默認(rèn)只跳轉(zhuǎn)到異常處理頁。在開發(fā)時我們需要將其打開,即我們剛才struts中配置的參數(shù).
該攔截器有三個參數(shù)。
Java代碼
logEnabled?(optional)?-?Should?exceptions?also?be?logged??(boolean?true|false) ??logLevel?(optional)?-?what?log?level?should?we?use?(trace,?debug,?info,?warn,?error,?fatal)??-?defaut?is?debug ??logCategory?(optional)?-?If?provided?we?would?use?this?category?(eg.?com.mycompany.app).?Default?is?to?use?com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor.??[java]view plaincopy
logEnabled?(optional)?-?Should?exceptions?also?be?logged??(boolean?true|false)??logLevel?(optional)?-?what?log?level?should?we?use?(trace,?debug,?info,?warn,?error,?fatal)??-?defaut?is?debug??logCategory?(optional)?-?If?provided?we?would?use?this?category?(eg.?com.mycompany.app).?Default?is?to?use?com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor.???
logEnabled配置是否打開日志輸出
logLevel 配置攔截到異常的日志級別。
logCategory 應(yīng)該是自定義日志。沒怎么用,有需求的可以自己研究研究。有知道用途的給俺回復(fù)下啊。呵呵
----------------------------------------------------------------------------------
Java代碼
<interceptors> ??????????????<interceptor?name="authority"??????????????????class="com.test.SystemInterceptor"?/> ??????????????<interceptor-stack?name="myAuth"> ??????????????????<interceptor-ref?name="defaultStack"> ??????????????????????<param?name="exception.logEnabled">true</param> ??????????????????????<param?name="exception.logLevel">error</param> ??????????????????</interceptor-ref> ??????????????????<interceptor-ref?name="authority"?/> ??????????????</interceptor-stack> ??????????</interceptors> ??????????<default-interceptor-ref?name="myAuth"?/>?
總結(jié)
以上是生活随笔為你收集整理的Struts2 控制台不打印异常的解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。