Search code examples
node.jsforeverwinston

NodeJS/Forever archive logs


I am using forever to run my node application. When I start forever I specify where to write the logs. I also specify to append to the log. Problem here is that my log is going to grow out of control over the course of months.

Is there any way to archive/roll logs on an interval, i.e. every day roll/archive what is in the log file to another file (i.e. server-2013-3-5.log). That way I can delete/move off old log files as needed.

I have just started looking into using Winston for my logger and I have not come across anything there that would help.

Any ideas?


Solution

  • forever itself doesn't support log rotation and log rotation is still a pending feature request for Winston.

    You can use logrotate which is included in most Linux distributions and is used for rotating system log files, as well as used by other software like Apache.

    Add a file to /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.
    }
    

    See more logrotate examples.