web-dev-qa-db-ja.com

NodeJS / Foreverアーカイブログ

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

ある間隔でログをアーカイブ/ロールする方法はありますか?つまり、ログファイルにあるものを別のファイル(つまり、server-2013-3-5.log)に毎日ロール/アーカイブします。そうすれば、必要に応じて古いログファイルを削除/削除できます。

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

何か案は?

18

永遠にそれ自体はログローテーションをサポートしておらず、ログローテーションはまだ 保留中の機能リクエスト Winstonの場合です。

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.
}

その他のlogrotateの例 を参照してください。

35
mak