spring mvc统一错误日志处理:
我们找程序错误时,找错的关键无非是:报的什么类型错误,哪个类,哪个方法,哪行,一般日志会打印很多第三方包的错误导致花费较多时间在大量的日志记录中寻找问题,以下方法可让日志简洁。
<!-- lang: xml -->
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<!-- lang: xml -->
<property name="defaultErrorView">
<!-- lang: xml -->
<value>error</value>
<!-- lang: xml -->
</property>
<!-- lang: xml -->
</bean>
ExceptionUtil 代码:
<!-- lang: java -->
import org.apache.log4j.Logger;
<!-- lang: java -->
<!-- lang: java -->
public class ExceptionUtil {
<!-- lang: java -->
private final static Logger log= Logger.getLogger(ExceptionUtil.class);
<!-- lang: java -->
<!-- lang: java -->
private final static String SPLIT_LINE="*******************************************************************";
<!-- lang: java -->
private final static String PACKAGE_PREFFIX = "com.pms";
<!-- lang: java -->
<!-- lang: java -->
public static void handle(Exception exception){
<!-- lang: java -->
log.error(SPLIT_LINE);
<!-- lang: java -->
log.error(exception);
<!-- lang: java -->
StackTraceElement[] elements = exception.getStackTrace();
<!-- lang: java -->
for(StackTraceElement element : elements){
<!-- lang: java -->
String className = element.getClassName();
<!-- lang: java -->
if(className.startsWith(PACKAGE_PREFFIX))
<!-- lang: java -->
log.error("class:"+element.getClassName()+">>method:"+element.getMethodName()+">>line:"+element.getLineNumber());
<!-- lang: java -->
}
<!-- lang: java -->
}
<!-- lang: java -->
}
如此则可只打印自身代码报错,屏蔽第三方包的报错。