Java jsp web应用程序的调试标志
我有一个jsp web应用程序,我在其中按如下方式打印错误stacktrace:Java jsp web应用程序的调试标志,java,eclipse,jsp,web.xml,Java,Eclipse,Jsp,Web.xml,我有一个jsp web应用程序,我在其中按如下方式打印错误stacktrace: catch (SQLException e) { e.printStackTrace(System.out); } 但在生产环境中,我不希望我的应用程序打印某些内容。我想设置一个全局标志(例如Debug=true)。然后我会像这样更新代码 if(debug) e.printStackTrace(System.out); 我的申请书有很多页。现在我应该在哪里声明调试变量?我可以
catch (SQLException e) {
e.printStackTrace(System.out);
}
但在生产环境中,我不希望我的应用程序打印某些内容。我想设置一个全局标志(例如Debug=true)。然后我会像这样更新代码
if(debug) e.printStackTrace(System.out);
我的申请书有很多页。现在我应该在哪里声明调试变量?我可以把它放在web.xml文件中,但我不确定它是否安全。谢谢使用JB Nizet建议的日志API。它们使用起来相当简单。下面是一个使用Apache()中非常流行的Log4j实现日志记录的小示例 您的所有类都将有一个logger实例就绪
private static final Logger log = Logger.getLogger(this.getClass());
然后在捕捉异常的地方
catch (SQLException e) {
log.debug(e);
}
然后只需在类路径中使用Log4j.properties
配置Log4j即可
log4j.appender.stdout.Target=System.out
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.rootLogger=debug, stdout
那么,改变日志记录就和改变日志记录一样简单
log4j.rootLogger=warn, stdout
这意味着您只对处于警告级别或更高级别(如error或fatal)的日志语句感兴趣。大约有六个日志级别:致命、错误、警告、信息、调试和跟踪。设置级别时,将忽略所有低于指定级别的日志语句
请注意,我已经简化了上面的内容。建议使用log4j.xml
而不是.properties
。最新的API还允许您在登录之前通过检查获得一些性能
catch (SQLException e) {
if (log.isDebugEnabled()) log.debug(e);
}
但是,在执行printStackTrace()
之前,使用框架而不仅仅是检查Globals.DEBUG
标志的真正卖点在于它是未来的证明。比如说明天如果你必须把事情记录到一个文件中,只需从ConsoleAppender
切换到FileAppender
。想要发送一封关于致命事件的电子邮件,请仅在本用例中使用SMTPAppender
。其他appender保持配置不变。您没有存储全局变量和配置文件路径的类(不是像web.xml
那样的类,而是直接用于您的应用程序)?请使用像slf4j、log4j或java.util.logging这样的日志API。这就是他们的目的。