在 Akka 2.10 下,我的日志配置在关机期间被重置……导致潜在的重要消息被写入标准输出而不是日志机制。
例如,这段代码:
String settings =
"akka.event-handlers = [\"akka.event.slf4j.Slf4jEventHandler\"]\n" +
"akka.actor.provider = \"akka.cluster.ClusterActorRefProvider\"";
Config config = ConfigFactory.parseString(settings);
ActorSystem system = ActorSystem.create("testing", config);
LoggingAdapter log = Logging.getLogger(system, new Object());
log.info("Via SlF4J");
system.shutdown();
Thread.sleep(1000);
log.info("After shutdown");
产生这个输出:
17:24:11.999 [testing-akka.actor.default-dispatcher-4] INFO akka.event.slf4j.Slf4jEventHandler - Slf4jEventHandler started
17:24:12.151 [testing-akka.actor.default-dispatcher-4] INFO N.168.1.106:2552) - RemoteServerStarted@akka://testing@192.168.1.106:2552
17:24:12.155 [testing-akka.actor.default-dispatcher-4] INFO java.lang.Object - Via SlF4J
[INFO] [04/12/2013 17:24:12.218] [testing-akka.actor.default-dispatcher-4] [NettyRemoteTransport(akka://testing@192.168.1.106:2552)] RemoteServerShutdown@akka://testing@192.168.1.106:2552
[INFO] [04/12/2013 17:24:13.156] [main] [Object(akka://testing)] After shutdown
前三行输出是通过 SLF4J(我配置的记录器),而最后两行是通过akka.event.Logging$StandardOutLogger
-- 这意味着在关闭期间记录的异常(在某些情况下我看到一些)正在丢失到记录器。
(当然,看到 RemoteServerShutdown 消息正确记录也很高兴。)
有人对这种行为有任何见解吗?