我的代码是这样的:
@WebListener
public class MyListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent arg0) {
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
new Thread(new Runnable() {
@Override
public void run() {
throw new RuntimeException("sdfsfds");
}
}).start();
}
}
这是我对 tomcat 8.0.5 的最低部署,在控制台中不会打印任何内容。任何人都可以提供一些线索吗?
由于
答案 0 :(得分:1)
服务器中没有控制台,所以你没有得到任何东西
但是您将获得位于logs文件夹中的catalina.out
文件中的语句。
注意:如果您的服务器是linux机器,那么<em> sysout 语句将打印在catalina.out
文件中
如果您的服务器位于Windows机器中,那么您将无法在catalina.out
文件中获得 sysout 语句。
您必须手动将控制台语句重定向到catalina.out文件。请按照以下步骤
catalinaRedirectLog.bat
catalina run > ..\logs\catalina.out 2<&1
shutdown.bat
catalinaRedirectLog.bat
启动tomcat,不要运行startup.bat
从现在开始我强烈建议您使用log4或任何其他日志记录框架并避免使用sysout语句
答案 1 :(得分:1)
System.out
)时, System.err
和CATALINA_BASE/logs/catalina.out
都被重定向到bin/startup.sh/.bat or bin/catalina.sh/.bat
。写入System.out
或System.err
的任何代码都将最终写入该文件。
默认情况下,Apache Tomcat服务器没有控制台。但是,您可以使用Apache log4j
这是一个基于Java的日志记录实用程序。
登录Apache Tomcat
是在Apache Commons Logging库的帮助下实现的。该库是不同日志框架之上的瘦包装器。它为Tomcat提供了跨各种日志级别进行层次结构日志记录的功能,而无需依赖特定的日志记录实现。
您可以使用logging log4j
中提供的说明为Tomcat配置Log4j编辑 :(来自您的一条评论)有关在Eclipse控制台中配置日志的信息,请参阅此thread
答案 2 :(得分:0)
您如何向ExecutorService es
提交任务?通过execute()
或submit()
?
如果您通过submit()
提交任务,则会被吞下,但无法与您联系。
看看这个Code
if (getState() == RUNNING) { // recheck after setting thread
V result;
try {
result = callable.call();
} catch (Throwable ex) {
setException(ex);
return;
}
set(result);
} else {
releaseShared(0); // cancel
}
了解如何处理Future任务exceptions。你必须覆盖
protected void afterExecute(Runnable r, Throwable t)
//Method invoked upon completion of execution of the given Runnable.
的一部分