我已经阅读了许多关于此的不同文章/线程,但尚未确定在我的 JSP 中执行 Apache Commons 日志记录的最佳方式。
为了提供一些上下文,我将改进的错误逻辑添加到最初使用 Spring 2 开发的应用程序中。所以现在我们有了使用 Spring 2 和 Spring 3 创建的控制器。
因此,与其在控制器级别使用 Spring MVC 3 的异常处理,我认为最好在 web.xml 中配置一个 JSP,该 JSP 将记录所有控制器的所有传播异常。
令人惊讶的是,我没有看到使用标记库在 JSP 中执行日志记录的简单方法。Apache Commons 似乎有一个已退役的日志标签库,但这是基于 log4j 而不是 Apache Commons Logging 本身。
因此,我在我的 JSP 中以编程方式执行以下操作:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import="org.apache.commons.logging.Log" %>
<%@ page import="org.apache.commons.logging.LogFactory" %>
<%@ page isErrorPage="true" %>
<% Log logger = LogFactory.getLog(this.getClass()); %>
<html>
<head>
</head>
<body>
<%
StringBuilder stringBuilder = new StringBuilder("\n" + exception);
for(StackTraceElement element : exception.getStackTrace())
{
stringBuilder.append("\n" + element.toString());
}
logger.error("Unhandled exception caught: " + stringBuilder.toString());
%>
<p>Text here</p>
</body>
</html>
所以我的问题是......有没有更好的方法来执行这个日志记录?上述工作,但似乎不必要的尴尬应该是一个常见的任务