nel seguente documento, i gestori di eventi sono descritti come prendendo il posto di registrazione http://akka.io/docs/akka/1.2/general/event-handler.htmlperché usare Akka eventhandler per la registrazione
C'è un gestore eventi che prende il posto di un sistema di registrazione in Akka:
akka.event.EventHandler
in particolare, questo link fornisce un esempio di come fare questo durante l'utilizzo di slf4j: http://akka.io/docs/akka/1.2/general/slf4j.html
La mia domanda è 'quali vantaggi offre? 'perché dovrei farlo invece di usare solo un logger usando lo schema standard?'
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
...
private static Logger log = LoggerFactory.getLogger(MyActor.class);
...
log.info("doing something");
C'è una sorta di beneficio sottostante che avrei avuto, sulla base di filettatura o dispatcher interni, utilizzando un gestore di evento sopra il modello logger sopra che non sto vedendo? Altrimenti, usare un gestore di eventi per la registrazione sembra una deviazione da uno schema familiare senza una ragione chiara.
Grazie per qualsiasi input!
Grazie Thomas, che fa bene senso. Sono andato avanti e ho cambiato la registrazione nei miei attori per usare i metodi di EventHandler.info() ecc. Non sembra che rispetti il layout del mio modello specificato nel mio file log4j.xml, ma vedo i miei messaggi a livello INFO almeno. –
La registrazione asincrona sembra un po 'pericolosa. Che garanzia ho che a) le dichiarazioni del registro vengano fuori nell'ordine corretto eb) che EventHandler sia in grado di stare al passo con il resto del sistema (se il logging è la parte più lenta del sistema, la coda del log crescerà appena e crescere fino a quando non si verifica un OutOfMemory). Ha senso registrare gli errori in modo sincrono? –
Se si dipende da una sequenza specifica o garanzie sull'ordinazione, forse un approccio basato sugli attori non è giusto per te.Detto questo, dal momento che il logging è gestito da un attore e gli attori ricevono i loro messaggi nell'ordine in cui sono stati ricevuti, questo non dovrebbe essere un problema. Inoltre, Akka ha un'implementazione di accodamento dei messaggi molto solida che è anche regolabile/sintonizzabile secondo le tue esigenze. Se si è preoccupati di sovraccaricare il buffer (non sono sicuro di cosa limiti Akka per impostazione predefinita) è possibile utilizzare una coda di messaggi limitata e creare il proprio gestore di registrazione che lo utilizza. –