在下面的文件,事件处理程序被描述为以日志的地方 http://akka.io/docs/akka/1.2/general/event-handler.html为什么要用阿卡事件处理程序的记录
有一个事件处理程序,这需要记录系统的地方在阿卡:
akka.event.EventHandler
具体地,该链接提供了如何同时使用SLF4J做到这一点的一个示例: http://akka.io/docs/akka/1.2/general/slf4j.html
我的问题是'这有什么好处? “为什么我会这样做,而不是仅仅使用标准模式的记录器?”
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
...
private static Logger log = LoggerFactory.getLogger(MyActor.class);
...
log.info("doing something");
是否有某种底层的好处我会得到,基于线程或调度程序的内部结构,通过使用一个事件处理程序在那个我没有看到上面的记录模式?如果没有,使用事件处理程序进行日志记录感觉就像没有明确的理由偏离熟悉的模式。
感谢您的任何意见!
感谢托马斯,那个牌子好感。我继续前进,并更改了我的演员的日志记录,以使用EventHandler.info()等方法。它似乎没有考虑我的log4j.xml文件中指定的模式布局,但我至少看到了我的INFO级别消息。 –
异步日志记录听起来有点危险。我有什么保证:a)日志语句以正确的顺序出现,以及b)EventHandler能够跟上系统的其他部分(如果日志记录是系统最慢的部分,日志队列只会增长并增长,直到OutOfMemory发生)。同步记录错误有意义吗? –
如果您依赖特定的排序顺序或保证排序,可能基于演员的方法并不适合您。也就是说,由于日志本身是由一名演员处理的,而演员们将按照他们收到的顺序给出他们的消息,所以这应该不成问题。此外,Akka有一个非常稳定的消息队列实现,它也可以根据您的需要进行调整/调整。如果你担心溢出缓冲区(我不确定默认情况下Akka有什么限制),你可以使用一个有界的消息队列并创建你自己的使用它的日志处理程序。 –