【发布时间】:2010-05-06 13:25:12
【问题描述】:
我最近继承了一个 2002 年编写的 J2EE Struts Web 应用程序。除了奇怪的 System.out.println() 之外,该应用程序没有任何日志记录。
我添加了 log4j 日志记录,以便我可以将一些信息写入控制台,但我担心如何最好地解决这个问题。任何建议、提示、最佳实践都将受到欢迎,因为我不想花太多时间向每个方法或类添加日志记录(或试图找到最好的日志记录位置 - 即错误的代码块/缺陷)。
我目前的方法是在我一直在寻找的几个类中添加一些日志记录以理解代码,但是有几个关键的地方我可以添加日志记录以最大限度地利用添加 log4j?
编辑:
进度更新:
我扩展了 Struts (v.1) ExceptionHandler 并将 struts-config.xml 配置为使用我的 CustomExceptionHandler 而不是 Struts 版本。然后通过覆盖execute() 方法,我添加了一些逻辑来使用log4j 记录异常。见下文:
公共类 CustomExceptionHandler 扩展 ExceptionHandler {
静态 Logger logger = Logger.getLogger(CustomExceptionHandler.class);
公共 ActionForward 执行(异常 ex,ExceptionConfig ae,ActionMapping 映射,ActionForm formInstance,HttpServletRequest 请求,HttpServletResponse 响应)抛出 ServletException {
日志异常(前);
return super.execute(ex, ae, mapping, formInstance, request, response);
}
私人无效日志异常(Throwable thr){
// 在此处添加代码以适当地记录异常
// 即 logger.error("异常是:" + ex.getMessage());
}
struts-config.xml 文件也必须更新:
<global-exceptions>
<exception key="" type="java.lang.Throwable"
handler="com.mycompany.CustomExceptionHandler" />
</global-exceptions>
现在我可以确定我将始终适当地记录任何异常。
对于被吃掉的异常,我将它们包装在未经检查的异常中,以便它们到达顶部:
改为:
} 捕捉(异常 e){ 抛出新的 RuntimeException(e); }【问题讨论】: