rotator

Emit rotate events and rotate files based on interval. Rotate event handlers are called "rotater-tots" or just tots. Tots get passed a readable stream the log file path and the data passed in when the log was asociated.

npm install rotator
18 downloads in the last week
19 downloads in the last month

Build Status

rotator

Emit rotate events for log files based on interval. Rotate event handlers are called "rotator-tots" or just tots. Tots get passed a (readable stream, the log file path, and the data passed in when the log was asociated).

example

var rotator = require('rotator');
var tot = rotator();

tot.addFile('./some.log',function(err){
  if(err) throw err; // oh no could not find the log or somthing
  console.log('log scheduled for rotation!');
});

tot.on('rotate',function(rs,file,data){
  // stop writing to the log
  // also upload it to s3? content-length is fs.stat.size 
  // rs.pipe ....
});

tot.on('rotated',function(rs,path,data){
  console.log(rs,'was old and needed to be rotated. copied to ',path);
  // prints "./some.log was old and needed to be rotated. copied to ./20120914_some.log"
});

api

rotator(config Object)

  • config

    • interval
      • the rotate interval for all files on this tot defaults to 1 day
    • size
      • the max size of the file before it is rotated. defauls to 5gb
    • gzip = true
      • rotated files are by default gzipped
    • pollInterval
      • how often to check if any logs need to be rotated. defaults to 1 minute.
    • statInterval
      • how often to poll size. i did not want to install watchers because we should not really need to check this so often.
  • returns an EventEmitter

tot EventEmitter

  • addFile(path)
    • add a file to be rotated
  • removeFile(path)
    • remove a path from the rotate list
  • formatTime(date)
    • creates day timestamp from UTC YMD overload this function to change the format.
  • rotate(path,cb)
    • path the file path you want to rotate
    • cb callback
  • rotateAfterClose(path,stream)
    • the file path that must not be rotated until stream close
    • the stream that must close

Events

  • rotate(rs ReadabeStream,p file path, data)
  • rotated(p file path,data)
  • rotate-done
    • all active rotates are done
  • rotate-error(err Error, p file path, data)
  • rotate-empty(p path,data);

Data Object data objects are passed to events. this is the data associated with each file.

  • data.stat
  • data.toRotate
  • data.rotating

victory

let me know if you have victory

npm loves you