2014-04-18 9 views
10

ich immer verwenden, um meine NodeJS Server zu starten und ich wählen Sie die Protokolldatei:immer anmelden und logrotate

immer -l /home/api/log/api_output.log starten server.js

I logrotate verwenden zu bewegen Logfile jeden Tag (wie rate hier: NodeJS/Forever archive logs), nach einem Tag meines Verzeichnis ist wie folgt:

-rw-r - r-- 1 root root 0 avril 18 00.00 api_output.log

-rw-r - r - 1 root root 95492 avril 18 12:01 api_output.log-20140418

So Rotation funktioniert, aber die Protokolle Nachrichten werden jetzt in api_output.log-20.140.418 geschrieben, statt api_output.log

Vielleicht kann mir jemand helfen?

+4

Sind Sie sicher, dass Sie mit 'copytruncate'? –

+0

copytruncate machen den Job Danke – igor

+1

Ehrfürchtig. Es wäre großartig, wenn Sie Ihre eigene Frage beantworten und erklären könnten, wie Sie das Problem lösen konnten. Dies wird anderen Benutzern helfen, die auf das gleiche Problem stoßen :) –

Antwort

10

vergaß ich copytruncate Option in meiner config-Datei, jetzt ist es funktioniert:

/etc/logrotate.d/api:

/home/api/log/api_output.log { 
    #size 50k 
    daily 
    dateext 
    missingok 
    rotate 7 
    compress 
    delaycompress 
    notifempty 
    #create 644 root 
    copytruncate 
} 
+0

Meine ewigen Logs wachsen für immer weiter Was kann ich tun? Auch die Logrotation summiert sich dazu, sie werden immer größer und größer. – JustGoscha

+1

Vorsicht! 'copytruncate' kann Protokolleinträge löschen. Insbesondere die Protokolleinträge, die zwischen den Kopier- und den Abschneideoperationen geschrieben wurden. –

+1

Es gibt ein Problem: Wenn das Logrotate für immer logrotate ist nicht in der Lage, Protokolle zu schreiben ... – giuseppe

0

ich denke, es ist wegen lebendigen Strom zwischen für immer und die Protokolldatei.

für immer Datei-Stream verwenden, um die Datei zu protokollieren. und Sie haben diese Datei mit logrotate umbenannt. aber Strom ändert sich nicht. so Protokollmeldungen wurden in api_output.log-20140418 geschrieben.

Wenn Sie den Stream ändern möchten, sollten Sie nach dem node.js-Code rotieren oder eine Pipeline verwenden.

+0

Ja, es war, dass aber copytruncate Option das Problem vermeiden! – igor