Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jsp web应用程序的调试标志_Java_Eclipse_Jsp_Web.xml - Fatal编程技术网

Java jsp web应用程序的调试标志

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); 我的申请书有很多页。现在我应该在哪里声明调试变量?我可以

我有一个jsp web应用程序,我在其中按如下方式打印错误stacktrace:

    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。这就是他们的目的。