Skip to content

chrismark/node-rotator

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.addLog('./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(path,'was old and needed to be rotated. copied to ',data.toRotate);
  // 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

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 100.0%