在我的 play 2/heroku 应用程序的网络进程中,我有以下代码:
LOG.info("=======1");
ConnectionFactory factory = new ConnectionFactory();
LOG.info("=======2");
factory.setUri(new URI(CLOUDAMQP_URL));
LOG.info("=======3");
Connection connection = factory.newConnection();
LOG.info("=======4");
channel = connection.createChannel();
LOG.info("=======5");
它产生输出:
2013-06-27T15:36:24.549110+00:00 app[web.1]: [info] c.e.g.m.MessagingBase - =======1
2013-06-27T15:36:24.575441+00:00 app[web.1]: [info] play - Application started (Prod)
2013-06-27T15:36:24.597986+00:00 app[web.1]: [info] c.e.g.m.MessagingBase - =======2
2013-06-27T15:36:24.598856+00:00 app[web.1]: [info] c.e.g.m.MessagingBase - =======3
换句话说,在调用 newConnection() 之后,我再也看不到该线程产生的任何输出。自然地,我以为是抛出了异常之类的,但事实上,我已经确认线程继续运行,它只是停止记录。(例如,我可以接收消息并且可以调用 System.exit() )。
到底是怎么回事?我该如何解决?
更新:我忘了提,这是一个 scala 项目,带有一些 java 代码(amqp 的东西是用 java 编写的),记录器是这样创建的:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
....
private static final Logger LOG = LoggerFactory.getLogger(WHATEVER.class);