En el siguiente documento, los controladores de eventos se describen como tomando el lugar de la tala http://akka.io/docs/akka/1.2/general/event-handler.htmlpor qué el uso akka manejador de sucesos para el registro
hay un controlador de eventos que toma el lugar de un sistema de registro en Akka:
akka.event.EventHandler
en concreto, este enlace es un ejemplo de cómo hacer esto durante el uso de slf4j: http://akka.io/docs/akka/1.2/general/slf4j.html
Mi pregunta es '¿qué ventajas le da esto? '¿por qué debería hacer esto en lugar de simplemente usar un registrador usando el patrón estándar?'
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
...
private static Logger log = LoggerFactory.getLogger(MyActor.class);
...
log.info("doing something");
¿Hay algún tipo de beneficio subyacente que tendría, sobre la base de roscado o expedidor internos, mediante el uso de un controlador de eventos sobre el patrón anterior registrador que no estoy viendo? De lo contrario, utilizar un controlador de eventos para el registro parece desviarse de un patrón familiar sin una razón clara.
¡Gracias por cualquier entrada!
Gracias Thomas, que hace buen sentido. Seguí adelante y cambié el registro en mis actores para usar los métodos EventHandler.info() etc. No parece estar respetando el diseño de mi patrón especificado en mi archivo log4j.xml, pero al menos veo mis mensajes de nivel INFO. –
El registro asincrónico suena un poco peligroso. ¿Qué garantía tengo de que a) las instrucciones de registro salgan en el orden correcto yb) que EventHandler pueda mantenerse al día con el resto del sistema (si el registro es la parte más lenta del sistema, la cola de registro solo crecerá? y crecer hasta que ocurra una OutOfMemory). ¿Tiene sentido registrar errores de forma sincrónica? –
Si depende de una secuencia específica o garantías sobre el pedido, tal vez un enfoque basado en el actor no sea adecuado para usted.Dicho esto, dado que el registro lo maneja un actor y los actores reciben sus mensajes en el orden en que fueron recibidos, esto no debería ser un problema. Además, Akka tiene una implementación de colas de mensajes muy sólida que también se puede ajustar/ajustar según sus necesidades. Si le preocupa desbordar el búfer (no estoy seguro de qué límites tiene Akka de forma predeterminada), puede usar una cola de mensajes limitada y crear su propio controlador de registro que la use. –