Ich arbeite an einer Knotenanwendung mit mehreren Modulen. Ich versuche jetzt, die Protokollierung richtig einzurichten (sollte es am Anfang getan haben) und mit Bunyan suchen.
Wäre es besser, ein einzelnes logger
-Modul zu haben, das exportiert und dann von den anderen Modulen benötigt wird, wie in angegeben antworten Sie oder definieren Sie direkt in jedem Modul eine neue Instanz von bunyan logger
und konfigurieren Sie sie entsprechend? Zur Wiederverwendung stelle ich mir erstere vor, aber ich weiß nicht, ob das in Zukunft restriktiv wäre.
Wenn ich einen einzelnen Logger wie
definiert habe %Vor% Dann würden alle Module, die davon Gebrauch machen, auch mit dem Namen filter
loggen, während es für jedes Modul sinnvoller wäre, sich bei einem Namen zu melden, der sich besser darstellt.
Habe ich auch Recht, dass alle Module Fehler in derselben Protokolldatei protokollieren sollten, z. systemErr.log (um einen besseren Überblick zu ermöglichen) oder sollten sie sich in ihre eigenen Fehlerprotokolle einloggen, z.B. module1Err.log, module2Err.log?
Wäre es besser, ein einzelnes Loggermodul zu haben, das exportiert und dann von den anderen Modulen benötigt wird
Ja . Je einfacher, desto besser. Dies vermeidet auch die Wiederholung der Protokolleinstellungen.
Habe ich auch Recht, dass alle Module Fehler in derselben Protokolldatei protokollieren sollten, z. systemErr.log (um einen besseren Überblick zu ermöglichen) oder sollten sie sich in ihre eigenen Fehlerprotokolle einloggen, z.B. module1Err.log, module2Err.log?
Eine Datei für die gesamte Anwendung. Da Bunyan das ndjson-Format verwendet, ist es einfach, die Hauptprotokolldatei bei Bedarf zu filtern. Ich empfehle die Einfachheit und Flexibilität der direkten Protokollierung in stdout
und ermöglicht der Implementierungsumgebung zu entscheiden, wohin das gehen soll. Dies ist auch praktisch für die Entwicklung, bei der Sie wahrscheinlich keine Protokolldateien auf der Festplatte benötigen oder wollen. Tools wie upstart
und multilog
können Ihre stdout-Protokolle ordnungsgemäß auf die Festplatte schreiben und die Protokollrotation für Sie übernehmen.
Ein extra Tipp. Wenn ich mich lokal entwickle, führe ich meine App so aus:
%Vor%node-dev
startet automatisch neu, wenn ich den Code ändere --inspect
aktiviert den Debugger, an den ich mit chrome devtools tee
kopiert stdout auf die Festplatte. Wenn ich also in Zukunft zurückgehen und Logs durchsuchen möchte, kann ich das tun, aber ich möchte nicht die vollständigen ndjson-Datensätze in meinem Terminal sehen bunyan -o short
gibt mir hübsch gedruckte Ausgaben an mein Terminal, was ich für die lokale Entwicklung haben möchte