2013-03-05 11 views
17

ノードアプリケーションを実行するのにforeverを使用しています。永遠に始めると、ログを書き込む場所を指定します。また、ログに追加するように指定します。ここでの問題は、私のログが何ヶ月もかけて制御不能になることです。NodeJS/Foreverアーカイブログ

間隔でログをアーカイブ/ロールする方法はありますか。つまり、ログファイルの内容を別のファイル(サーバー-2013-3-5.logなど)にロール/アーカイブします。そうすれば、必要に応じて古いログファイルを削除/削除することができます。

私はロガーにWinstonを使用してみることにしましたが、そこに役立つものは何も見つかりませんでした。

アイデア?

+0

どのように最後に解決しましたか? – JustGoscha

答えて

34

forever自体はログのローテーションをサポートしておらず、ログのローテーションは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

+2

'sharedscripts':" sharedscriptsは、postrotateスクリプトが1回だけ実行されることを意味します(古いログが圧縮された後)、回転しているログごとに一度ではありません。 " [man logrotate](http://linuxcommand.org/man_pages/logrotate8.html) –

+0

@JCM Winstonでこの新機能を使用するには永遠にどのように設定しますか?私は、コマンドラインの使用法から永遠のプログラムによる使用に切り替える必要がありますか? – sheldonh