Log4JS ist einer der besten Module in der Log -Verarbeitung von Node.js. Im Vergleich zu Konsolen- oder TJ -Debuggen sind die folgenden für Node.js -Projekte, die in Produktion gestellt werden, unverzichtbar:
In diesem Artikel erhalten Sie eine umfassende Einführung in LOG4JS, sodass Sie LOG4JS in Ihrem Projekt mit Leichtigkeit, einfacher Entwicklung und Debugging sowie einer besseren Überwachung oder Fehlerbehebung online verwenden können.
Ein kleiner Test
Die folgenden drei Codezeilen zeigen Ihnen die einfachste Verwendung von LOG4JS:
// Datei: Einfachste.jsvar log4js = require ('log4js'); var logger = log4js.getLogger (); logger.debug ("Zeit:", New Date ());Das Aufrufen von .GetLogger () kann eine log4JS -Logger -Instanz erhalten. Die Verwendung dieser Instanz ist die gleiche wie die der Konsole. Sie können .Debug (auch .Info, .Eror und andere Methoden) anrufen, um Protokolle auszugeben.
Führen Sie den Knoten einfachest.js aus und die Ausgabe lautet wie folgt:
$ node einfachest.js [2016-08-21 00: 01: 24.852] [Debug] [Standard]-Zeit: 2016-08-20T16: 01: 24.852z
Zeit: 2016-08-20T16: 01: 24.852Z ist das, was wir ausgeben möchten. Der vorherige enthält den Spezifizierer [2016-08-21 00: 01: 24.852] [Debug] [Standard] ist später aufgeführt.
Ist es nicht sehr einfach zu bedienen? Bevor wir uns mit der fortgeschrittenen Verwendung von log4js eintauchen, sollten wir uns zunächst mit den Konzepten in Log4Js vertraut machen.
Ebene
Dies ist nicht schwer zu verstehen, es ist die Einstufung von Protokollen. Nur wenn Protokolle hierarchisch sind, können log4js uns bessere Protokolle anzeigen (verschiedene Protokollebenen verwenden unterschiedliche Farben in der Konsole, z. B. Fehler sind normalerweise rot), und wenn die Produktion selektiv Protokolle abgeben, z.
Die Protokolle von log4Js sind in neun Ebenen unterteilt, und die Namen und Gewichte jeder Ebene sind wie folgt:
{ ALL: new Level(Number.MIN_VALUE, "ALL"), TRACE: new Level(5000, "TRACE"), DEBUG: new Level(10000, "DEBUG"), INFO: new Level(20000, "INFO"), WARN: new Level(30000, "WARN"), ERROR: new Level(40000, "ERROR"), FATAL: new Level(50000, "FATAL"), MARK: new Level (9007199254740992, "Mark"), // 2^53 AUS: Neue Ebene (number.max_value, "off")}Vorheriges Bild:
Alle diese beiden Ebenen werden in der Geschäftsordnung nicht direkt verwendet. Die verbleibenden sieben sind die sieben Methoden, die der Logger -Instanz entsprechen. Daher ist der vorherige [2016-08-21 00: 01: 24.852] [Debug] [Standard]-Zeit: 2016-08-20T16: 01: 24.852Z ist die Ebene dieses Protokolls.
Typ
Log4JS hat auch ein Konzept namens Kategorie (Typ). Sie können den Typ einer Logger -Instanz festlegen und Protokolle gemäß einer anderen Dimension unterscheiden:
// Datei: set-catetory.jsvar log4js = required ('log4js'); var logger = log4Js.getLogger ('Beispiel'); logger.debug ("Zeit:", New Date ());Wenn Sie eine Logger -Instanz durch getLogger erhalten, ist der einzige Parameter, der übergeben werden kann, die LoggerCategory (wie "Beispiel"). Dieser Parameter gibt an, zu welcher Kategorie die Logger -Instanz gehört. Dies ist das gleiche wie das Debug von TJ:
var debug = required ('debug') ('Worker'); setInterval (function () {debug ('etwas Arbeit machen');}, 1000);Im Debug -Arbeiter ist es auch eine Protokollklassifizierung. OK, kommen Sie zurück und führen Sie Knoten set-catetory.js aus:
[2016-08-21 01: 16: 00.212] [Debug] Beispiel-Zeit: 2016-08-20T17: 16: 00.212z
Der einzige Unterschied zum vorherigen [2016-08-21 00: 01: 24.852] [Debug] [Standard]-Zeit: 2016-08-20T16: 01: 24.852Z ist, dass [Standard] ein Beispiel geworden ist.
Wie nutzt die Kategorie? Es ist flexibler als das Level und bietet eine zweite Unterscheidungsabmessung für die Protokolle. Sie können beispielsweise eine andere Kategorie für jede Datei festlegen, z. B. in set-catetory.js:
// Datei: set-catetory.jsvar log4js = required ('log4js'); var logger = log4js.getLogger ('set-catetory.js'); logger.debug ("Zeit:", New Date ());Aus dem Protokoll [2016-08-21 01: 24: 07.332] [Debug] set-catetory.js-Zeit: 2016-08-20T17: 24: 07.331Z, dass dieses Protokoll von der Datei set-catetory.js stammt. Oder verwenden Sie verschiedene Kategorien für verschiedene Knotenpakete, damit die Protokolle unterschieden werden können, aus welchem Modul sie stammen.
Appender
Nun, jetzt hat das Protokoll Ebenen und Kategorien, die das Problem der Einstufung und Klassifizierung von Protokollen am Eingang löst. In log4JS wird das Log -Exportproblem (d. H. Wenn die Ausgabe des Protokolls ausgegeben wird) von Appender gelöst.
Standard Appender
Im Folgenden finden Sie die Standard -Appender -Einstellungen für log4js intern:
// log4js.jsdefaultConfig = {Appeders: [{type: "console"}]}Wie Sie sehen können, werden die Protokolle, wenn Protokolle in keiner Weise konfiguriert werden, die Protokolle standardmäßig an die Konsole ausgegeben.
Richten Sie Ihren eigenen Appender ein
Wir können den Appender, den wir wollen, durch log4js.configure festlegen.
// Datei: Custom-Appender.jsvar log4js = require ('log4js'); log4js.configure ({Appedler: [{type: 'file', Dateiname: 'Standard .log'}]}) var logger = log4js.getlogger ('passende Anbieter');Im obigen Beispiel geben wir das Protokoll in die Datei aus und führen den Code aus. log4js erstellt eine Datei namens default.log im aktuellen Verzeichnis. [2016-08-21 08: 43: 21.272] [Debug] Custom-Appender-Zeit: 2016-08-21T00: 43: 21.272Z gibt es in die Datei aus.
Der von log4js bereitgestellte Appender
Konsole und Datei sind beide von Log4JS bereitgestellte Appender, zusätzlich dazu:
DATEDFILE: Das Protokoll wird in eine Datei ausgegeben, und die Protokolldatei kann in einem bestimmten Datumsmodus, z. B. die Ausgabe auf Standard-2016-08-21.log, und die Ausgabe für Standard-2016-08-2.
SMTP: Ausgabeprotokoll für E -Mail;
Mailgun: Ausgabeprotokolle für MailGun über die Mailgun -API;
Levelfilter kann durch Niveau filtriert werden;
Und so weiter sehen Sie die vollständige Liste hier.
Filterstufen und Kategorien
Wir können die Konfiguration von Appender anpassen und die Protokollebenen und Kategorien filtern:
// Datei: Level-and-Category.jsvar log4js = require ('log4js'); log4js.configure ({Appender: [{type: 'loglevelfilter', Level: 'Debugg', Kategorie: 'Kategorie', Appender: {Typ: 'Datei', Filename: Default: 'Default.Log. log4js.getLogger ('category1'); var logger2 = log4JS.GetLogger ('category2'); logger1.debug ("Zeit:", New Date ()); logger1.Trace ("Zeit:", New Date (); Logger2.debug ("Zeit:", New Date ();Fügen Sie ein Protokoll zu Standard.
[2016-08-21 10: 08: 21.630] [Debug] Kategorie1-Zeit: 2016-08-21T02: 08: 21.629z
Schauen wir uns den Code an:
Verwenden Sie Loglevelfilter und Level, um die Protokollpegel zu filtern, und alle Protokolle mit Gewichten, die größer oder gleich dem Debuggen sind, werden ausgegeben. Dies ist auch die Bedeutung des zuvor erwähnten logarithmischen Gewichts.
Wählen Sie die Kategorie aus, um die Protokolle durch die Kategorie auszugeben. Die Protokolle unter Kategorie 2 werden herausgefiltert. Die Konfiguration akzeptiert auch ein Array, wie z. B. ['Kategorie1', 'Kategorie2'], so dass beide Kategorien von Protokollen in die Datei ausgegeben werden.
Layout
Layout ist eine erweiterte Funktion von Log4JS. Durch das Layout können wir das Format jedes Ausgabebodells anpassen. Log4JS hat vier Arten von Formaten integriert:
MessagePass Through: Ausgabe nur den Inhalt des Protokolls;
Basic: Die Zeit, die Protokollebene und die Kategorie werden vor dem Inhalt des Protokolls hinzugefügt, und das Standardlayout des Protokolls wird normalerweise hinzugefügt.
Farbig/farbig: Fügen Sie dem Protokoll auf der Grundlage der Basis Farbe hinzu, die Appender -Konsole verwendet dieses Layout standardmäßig.
Muster: Dies ist ein spezieller Typ, der durch jedes gewünschte Format definiert werden kann.
Ein Beispiel für Muster:
// Datei: layout -pattern.jsvar log4js = required ('log4js'); log4js.configure ({Appender: [{type: 'console', Layout: {Typ: 'Muster', Muster: '[%r] [%5.5p%] -%m%n'}}]}) var logger = var logger = var logger = var logger = log4Js.getLogger ('Layout-Pattern'); logger.debug ("Zeit:", New Date ());%R %P $ M $ N ist ein integrierter Spezifizierer für log4Js. Sie können dies verwenden, um einige Meta -Informationen auszugeben. Weitere Informationen finden Sie in der Dokumentation LOG4JS.
Lassen Sie uns die Positionierung von Logger, Appender und Layout in einem Bild erläutern.
Praktisch: Ausgabezugriffsprotokollzugriff.log für die Knotenanwendung
Um die Problemprüfung zu erleichtern, werden die Protokolle von Anwendungsanforderungen, die eingeben und beenden, häufig in Produktionsumgebungen aufgezeichnet. Wie implementiere ich es mit Log4Js? Geben Sie einfach den Code ein:
// Datei: server.jsvar log4js = required ('log4js'); var express = required ('express'); log4js.configure ({Appender: [{type: 'DateFile', Dateiname: 'Access.Log', Muster: -yyyyyy-mm-Dd.log ', immer in der Lage, zu Access'; express (); app.use (log4js.connectLogger (log4js.getLogger ('access'), {Level: log4Js.Levels.info})); app.get ('/', Funktion (req, res.s.s.send ('Front-End Fremd Journal Comment';});Sehen Sie, was wir getan haben:
Ein Appender ist konfiguriert, um ein Protokoll mit dem Kategoriezugriff aus dem Protokoll auszuwählen und es in eine Scroll -Datei auszugeben.
Log4JS.GetLogger ('Access') erhält eine Logger -Instanz mit einem Kategoriezugriff und übergibt sie an das log4js.connectLogger Middleware. Diese Middleware sammelt Zugriffsinformationen und druckt sie über diese Instanz.
Starten Sie den Server und besuchen Sie http: // localhost: 5000. Sie werden feststellen, dass es im Verzeichnis eine zusätzliche Datei mit dem Namen Access.log-2016-08-21.log gibt, das zwei Protokolle enthält:
[2016-08-21 14: 34: 04.752] [Info] Zugriff - :: 1 - - "Get/http/1.1" 200 18 "" "Mozilla/5.0 (Macintosh; Intel mac os x 10_11_0) Applewebkit/537.36 (khtml, wie gecko) Chrome/52.0.0.2743.116.
[2016-08-21 14: 34: 05.002] [Info] Zugriff - :: 1 - - "get/favicon.ico http/1.1" 404 24 "http: // localhost: 5000/" "Mozilla/5.0 (Macintosh; Intel moc Os x 10_11_0)). Chrome/52.0.2743.116 Safari/537.36 "
Durch die Funktion der Klassifizierung und Appender von log4JS -Protokollen geben wir die Zugriffsprotokolle in eine scroll aktualisierte Datei aus.
Zusammenfassen
In diesem Artikel wird die Verwendung von log4js umfassend eingeführt. Im Vergleich zu Konsolen- oder einfachen Protokollierungswerkzeugen ist Log4JS komplexer und natürlich leistungsfähiger und für Anwendungen auf Produktionsebene geeignet. Wenn Sie interessiert sind, hinterlassen Sie bitte eine Nachricht, um uns zu sagen. Als nächstes können Sie Sie mit der Verwaltung der Konfiguration in Knotenanwendungen vorstellen.