Ich möchte die user_id der Person, die eine Anfrage stellt, und den Methodennamen jeder Methode, die für eine JavaScript-Klasse aufgerufen wird, protokollieren. Zum Beispiel:
%Vor%Da alles async ist, könnten Benutzer 35 und 78 gleichzeitig Dinge tun. Daher möchte ich sicherstellen, dass jede Protokollzeile mit ihrer Benutzer-ID beginnt, damit ich sie erfassen kann und nur die Aktivitäten eines Benutzers gleichzeitig sehen kann.
Gibt es eine superkluge Möglichkeit, dies zu tun, ohne Logger-Anweisungen zu jeder Methode hinzuzufügen?
Ich schätze, das ist eine Web-App. In diesem Fall können Sie, wenn Sie connect verwenden, eine Logger-Middleware verwenden, die den Benutzer und den URL-Pfad protokolliert, was wahrscheinlich ausreichend ist. Andernfalls müssen Sie einige Metaprogrammierung in Richtung der einzelnen Funktionen in einer Wrapper-Funktion für die Protokollierung tun.
%Vor%Damit dies funktioniert, müssen Ihre Klassenmethoden Funktionen genannt werden, nicht anonym.
%Vor%Dies ist eine Alternative, nicht ganz sicher, wie zuverlässig es ist, es fühlt sich ein bisschen falsch an:
%Vor% Wie Sie sehen, überschreibt es die call
-Funktion - dies erzeugt ein kleines Problem, wenn Sie versuchen, console.log()
aufzurufen, also müssen Sie die Funktion zurück tauschen. Aber es scheint zu funktionieren!
BEARBEITEN
Da dies mit CoffeeScript versehen ist:
%Vor%Tags und Links javascript coffeescript node.js logging