Fetching contributors…
Cannot retrieve contributors at this time
92 lines (66 sloc) 2.46 KB



Author: Luca Grulla -


npm install tail


Tail = require('tail').Tail;

tail = new Tail("fileToTail");

tail.on("line", function(data) {

tail.on("error", function(error) {
  console.log('ERROR: ', error);

If you want to stop tail:


To start watching again:


The only mandatory parameter is the path to the file to tail.

var fileToTail = "/path/to/fileToTail.txt";
new Tail(fileToTail)

Optional parameters can be passed via a hash:

var options= {separator: /[\r]{0,1}\n/, fromBeginning: false, fsWatchOptions: {}, follow: true, logger: console}
new Tail(fileToTail, options)

Available parameters:

  • separator: the line separator token (default /[\r]{0,1}\n/ to handle linux/mac (9+)/windows)
  • fsWatchOptions: the full set of options that can be passed to as per node documentation (default: {})
  • fromBeginning: forces the tail of the file from the very beginning of it instead of from the first new line that will be appended (default: false)
  • follow: simulate tail -F option. In the case the file is moved/renamed (or logrotated), if set to true tail will try to start tailing again after a 1 second delay, if set to false it will just emit an error event (default: true)
  • logger: a logger object(default: no logger). The passed logger has to respond to two methods:
    • info([data][, ...])
    • error([data][, ...])
  • useWatchFile: if set to true will force the use of fs.watchFile rather than delegating to the library the choice between and fs.watchFile (default: false)
  • encoding: the encoding of the file to tail (default:utf-8)

Emitted events

Tail emits two events:

  • line
  • error

Want to fork?

Tail is written in CoffeeScript.

The Cakefile generates the javascript that is then published to npm.

Real world use

Tail was born as part of a data firehose. Read about it here.


MIT. Please see License file for more details.