Jetzt werde ich gebeten, die Protokollierungsfunktion in akkas Akteur hinzuzufügen.
Wenn eine Nachricht empfangen wird, bevor sie bearbeitet wird, sollte diese Nachricht in das Protokoll geschrieben werden. Und bevor eine Nachricht gesendet wird, sollte diese Nachricht zuerst protokolliert werden.
Ich denke, ich sollte die Funktionen receive
und send
in Actor außer Kraft setzen. Angenommen, ich erstelle ein Merkmal actorlog
, das Actor
erweitert. Und die Klasse myActor
erweitert actorlog
. Aber in myActor
muss ich receive
function überschreiben (es scheint hier Probleme zu verursachen). Also bin ich verwirrt was ich tun soll.
PS. Ich weiß, akka bietet Protokollierung. Aber jetzt muss ich diese Funktion selbst implementieren.
Neben den anderen Antworten hier ist ein anderer Ansatz, orElse
zu verwenden, um eine Teilfunktion an Ihre receive
anzuhängen. Geben Sie in dieser Teilfunktion die Protokollierung in isDefinedAt
ein, damit sie bei jeder Nachricht aufgerufen wird.
Zum Beispiel:
%Vor% Die Verwendung von orElse
ist ein allgemeiner Ansatz zum Erstellen von receive
behavior. In den meisten Fällen komponiere ich Dinge wie diese:
Ein gutes Beispiel für den Stackable-Traits-Ansatz kann in dieser Präsentation gesehen werden: Ссылка
>Es gibt ein Dienstprogramm, um die Protokollierung der empfangenen Nachrichten in Akka zu erhalten. Es wird kurz in der Protokollierungsdokumentation erwähnt. Im Grunde verpackst du deine Empfangsfunktion so:
%Vor%Und dann aktivierst du es in deiner Konfiguration mit:
%Vor%Die Informationen werden auf Debug-Ebene protokolliert.