2013-03-05 81 views
17

我正在使用forever來運行我的節點應用程序。當我永遠開始時,我指定在哪裏寫日誌。我還指定附加到日誌。這裏的問題是,我的日誌將在幾個月內失控。NodeJS/Forever存檔日誌

是否有任何方法在間隔內存檔/滾動日誌,即每日滾動/存檔日誌文件中的內容到另一個文件(即server-2013-3-5.log)。這樣我可以根據需要刪除/移出舊的日誌文件。

我剛開始研究使用溫斯頓爲我的記錄器,我還沒有遇到任何有幫助的東西。

任何想法?

+0

你到底是如何解決它的? – JustGoscha 2016-01-23 13:20:06

回答

34

永遠本身不支持日誌旋轉和日誌旋轉仍然是Winston的pending feature request

您可以使用logrotate,它包含在大多數Linux發行版中,用於輪換系統日誌文件以及其他軟件(如Apache)使用。

將文件添加到/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

+2

Winston現在可以進行日誌輪換:https://github.com/flatiron/winston/pull/205 – JCM 2013-06-10 19:37:33

+2

'sharedscripts':「共享腳本意味着postrotate腳本只能運行一次(在舊日誌被壓縮後),對於每個旋轉的日誌都不會一次。「 [man logrotate](http://linuxcommand.org/man_pages/logrotate8.html) – 2014-04-30 12:31:52

+0

@JCM儘管如何在Winston中永久使用這個新功能呢?我是否必須從命令行使用切換到永遠的編程使用? – sheldonh 2015-04-10 11:45:55