gpt4 book ai didi

java - struts - 每层的日志记录(Action、DAO)

转载 作者:行者123 更新时间:2023-12-01 05:41:58 25 4
gpt4 key购买 nike

我是 struts 新手,我想了解如何处理应用程序每一层(JSP/ActionForm、Action、DAO)的日志记录。

我注意到,随着时间的推移,错误日志文件可能会变得过于困惑且不方便查看。如何改进日志记录模式以分离应用程序每一层引发的错误?

而且我也找不到处理 jsp 页面上遇到的异常的方法。

操作代码模板

public ActionForward perform(ActionMapping mapping, 
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {

try {
// calls the DAO
}
catch (CustomDAOException e) {
log.error(e);
// inform application there is an error
}
catch (Exception e) {
log.error(e)
// inform application there is an error
}
}

DAO 代码模板

public void update() throw CustomDAOException {
try {
// Prepare a statement to insert a record
String sql = "INSERT INTO my_table (col_string) VALUES(?)";
PreparedStatement pstmt = connection.prepareStatement(sql);

// Insert 10 rows
for (int i=0; i<10; i++) {
// Set the value
pstmt.setString(1, "row "+i);

// Insert the row
pstmt.executeUpdate();
}
} catch (SQLException e) {
throw new CustomDAOException(e);
}

最佳答案

在你的struts-config中设置一个异常处理程序,让所有异常冒泡到那里,并将它们记录在那里。这将使所有异常捕获和日志记录代码变得不必要。

对于JSP,不要在JSP中做任何容易出错的事情,在action中做,然后将结果添加到请求属性中。

我猜您可能使用的是 Struts 1 的旧版本,我见过类似的代码,它们必须捕获操作中的异常,显然是因为异常处理程序不适用于早期版本的 struts。现在这个问题已经解决了,您应该做的第一件事就是将应用程序至少升级到 1.2,最好是 1.3。使用过时版本的 Web 框架是一件坏事,您错过的修复程序中有一些安全补丁,因此您的应用程序可能不安全。

看看你的示例代码,它看起来确实没有那么糟糕。我不认为在你的操作中捕获不同类型的异常有什么意义(如果我知道你省略了什么,这可能会更清楚),但我没有看到像在每一层中记录事物然后重新抛出它们这样的不良做法(这样相同的堆栈跟踪重复出现),或者记录异常并返回 null(因此调用代码可能不知道出了什么问题),或者只是在没有跟踪的情况下吃掉异常。如果您更具体地说明您想要解决的问题,也许我或其他人可以提供更多帮助。

关于java - struts - 每层的日志记录(Action、DAO),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6929562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com