2013-03-05 9 views
17

Ich verwende forever, um meine Knotenanwendung auszuführen. Wenn ich für immer anfange, gebe ich an, wo ich die Logs schreiben soll. Ich gebe auch an, an das Protokoll anzuhängen. Das Problem ist, dass mein Protokoll im Laufe der Monate außer Kontrolle geraten wird.NodeJS/Forever archiviert Protokolle

Gibt es eine Möglichkeit zum Archivieren/Roll-Logs in einem Intervall, d. H. Jeden Tag Roll/Archiv, was in der Protokolldatei zu einer anderen Datei (d. H. Server-2013-3-5.log). Auf diese Weise kann ich alte Protokolldateien nach Bedarf löschen/entfernen.

Ich habe gerade angefangen, mit Winston für meinen Logger zu arbeiten, und ich habe nichts gefunden, das helfen würde.

Irgendwelche Ideen?

+0

Wie haben Sie es am Ende gelöst? – JustGoscha

Antwort

34

für immer selbst nicht unterstützt Log-Rotation und Log-Rotation ist immer noch eine pending feature request für Winston.

Sie können logrotate verwenden, das in den meisten Linux-Distributionen enthalten ist und für rotierende Systemprotokolldateien sowie für andere Software wie Apache verwendet wird.

eine Datei /etc/logrotate.d/

/path/to/server.log { 
    daily   # how often to rotate 
    rotate 10  # max num of log files to keep 
    missingok  # don't panic if the log file doesn't exist 
    notifempty # ignore empty files 
    compress  # compress rotated log file with gzip 
    sharedscripts # postrotate script (if any) will be run only once at the end, not once for each rotated log 
    copytruncate # needed for forever to work properly 
    dateext  # adds date to filename 
    dateformat %Y-%m-%d. 
} 

more logrotate examples Siehe hinzufügen.

+2

Log-Rotation ist jetzt mit Winston möglich: https://github.com/flatiron/winston/pull/205 – JCM

+2

'sharedscripts':" Die sharedscripts bedeutet, dass das Postrotatscript nur einmal ausgeführt wird (nachdem die alten Logs komprimiert wurden)), nicht einmal für jedes rotierte Protokoll. " [man logrotate] (http://linuxcommand.org/man_pages/logrotate8.html) –

+0

@JCM Wie konfiguriert man für immer, um diese neue Funktion in Winston zu verwenden? Muss ich von der Befehlszeilennutzung zur programmatischen Verwendung von immer wechseln? – sheldonh