An opinionated and hopefully improved log rotator for pm2, inspired on the original pm2-logrotate module.
This log rotator starts as a spin-off of the official pm2-logrotate module and will diverge to support more configuration options. All credits for the original rotator go to the pm2-logrotate authors and contributors.
Tested on node-5.10.x, requires pm2.
pm2 install pm2-logrotate-imp
Lower memory footprint, less CPU usage and quicker rotations
This rotator can use pm2's reloadLogs to handle log files without copying content. Use "rotation_mode" configuration property to enable it.
Notice that due to this issue, pm2 does not reload its own logs. As a workaround, pm2's own logs are rotated using the "copytruncate" method.
There are several values you can change in this module:
- "interval_unit": A unit of time in the formats supported by Moment.js. Default is 'd' (days).
- "interval": An amount of time expressed in "interval_unit" units ather which files will be rotated. Default is 7.
- "max_size": A maximum file size that will cause forced rotation of the files, in filesize-parser format. Default is "10M".
- "retain": Number of rotated files to retain, or 'none' to never delete files. Defaults to 'none'.
- "date_mode": Date mode used in rotated file names. Valid values are 'utc' for UTC time or 'system' for local system time. Defaults to 'system'.
- "date_format": A string in the formats supported by Moment.js. Default is 'YYYY-MM-DD_HH-mm-ss'
- "rotation_mode": Changes the way log files are rotated, "copytruncate" or "reload". "copytruncate" creates a new file and copies content from the original log file. Once completed, the original log file is truncated. "reload" renames the original log file, then asks pm2 to restart logging. Since this does not involve copying data, it is faster. Default is "reload".
After having installed the module:
pm2 set pm2-logrotate-imp:<param> <value>
Examples:
pm2 set pm2-logrotate-imp:max_size 1M
pm2 set pm2-logrotate-imp:interval_unit months
Sets max file size for starting rotation to 1 MB and time units to months.
To get the current configuration, use:
pm2 get pm2-logrotate-imp:max_size