Tomcat 7.0.47 - Windows 7 - 默认安装。
未处理的异常不会进入控制台,也不会出现在 apache-tomcat-7.0.47\logs 下的任何日志文件中。
Console 和 catalina.2015-04-16.log 被写入只是遗漏的错误。 System.out.println 将转到控制台(但不是 catalina.2015-04-16.log)。 System.err.println 也转到控制台。但是诸如未处理的异常之类的运行时错误不会!他们在哪里?
查看/conf/logging.properties 文件:
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.
不知道从这里去哪里。作为诊断,我故意导致空指针异常。我在它之前和之后放了一个 System.out.println。之前的 System.out 出现在控制台中。 after 没有(这是我所期望的)但未处理的异常无处可寻。
难倒...
最佳答案
好的,我发现了问题。这很简单。/conf/logging.properties 文件包含默认为 FINE 的日志记录级别。我习惯了较早的Tomcat版本,所以FINE的水平在我看来会很详细,显然不是。将日志记录级别设置为“ALL”后(“FINEST”可能也有效)。未处理的异常开始出现在控制台日志中。
/conf/logging.properties 文件的部分如下:
1catalina.org.apache.juli.FileHandler.level = ALL
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.
3manager.org.apache.juli.FileHandler.level = FINE
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix = manager.
4host-manager.org.apache.juli.FileHandler.level = FINE
4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.FileHandler.prefix = host-manager.
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
我将第一组和最后一组(1catalina.org 和 java.util.logging.ConsoleHandler)更改为 ALL。
关于java - Tomcat 7.0.47 - Windows - 缺少未处理的异常/堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29681739/