Logging mit wenig Aufwand

Wenn man eine Node.js Anwendung schreibt, möchte man nicht immer eine Loglösung wie Morgan oder Winston verwenden, sondern einfach ein paar Ausgaben auf der Konsole, angereicht um die Informationen Datum und Uhrzeit. Dies kann man mit wenigen Zeilen Code erreichen:

console.logCopy = console.log.bind(console);
console.log = function(data){
      var tt = ‘[‘ + new Date().toLocaleDateString(‘de-DE’) + “_” +new Date().toISOString().slice(11,-5) + ‘] ‘;
      this.logCopy(tt, data);
};

Anschließend produziert console.log("Text 123") eine Ausgabe mit vorangestellter Uhrzeit und Datum.

Wenn die Anwendung über einen längeren Zeitraum läuft, ist eine Logrotation außerdem sinnvoll. Anstatt dies in jeder Anwendung einzeln zu implementieren, die auf dem Server läuft, kann man auch einfach das pm2-Modul pm2-logrotate verwenden. PM2 ist ein schlankes Tool aus der Kategorie Prozess-Monitoring: leichtgewichtig, schnell eingerichtet und insgesamt sehr zu empfehlen, insbesondere wenn man mehrere nodebasierte Anwendungen in Betrieb hat. Die Einrichtung ist hier beschrieben: https://www.npmjs.com/package/pm2
PM2 schreibt pro überwachter Node-Anwendung zwei Logdateien, err.log und out.log. Diese sind unter Linux unter /home/username/.pm2/logs zu finden. Wenn eine andere Lokation gewünscht ist, kann dies PM2 bei Start der Anwendung über den --log Parameter entsprechend mitgeteilt werden: pm2 start anwendung.js --log /lokation/meiner/wahl/logs
Das Modul pm2-logrotate wird wie folgt installiert und startet nach der Installation automatisch: pm2 install pm2-logrotate (Achtung: pm2 install nicht npm install!)
Nach einer Eingabe von pm2 status wird das Modul in der Modulübersicht gesondert aufgeführt, inkl. Statusinformation. Als Default verwendet pm2-logrotate für Logdateien bzgl. der Dateigröße ein Limit von 10MB und rotiert täglich 30 Tage lang. Die Konfiguration lässt sich beliebig anpassen und auf Wunsch können ältere Logs auch komprimiert werden - wie das geht ist auf der Projektseite dokumentiert: https://github.com/keymetrics/pm2-logrotate

Happy coding!