The zero dependency Node.js module for tailing a file
Made with ❤️ by Luca Grulla
- TOC {:toc}
npm install tailTail=require("tail").Tail;tail=newTail("fileToTail");tail.on("line",function(data){console.log(data);});tail.on("error",function(error){console.log("ERROR: ",error);});If you want to stop tail:
tail.unwatch()To start watching again:
tail.watch()The only mandatory parameter is the path to the file to tail.
varfileToTail="/path/to/fileToTail.txt";newTail(fileToTail)If the file is missing or invalidTail constructor will throw an Exception and won't initialize.
try{newTail("missingFile.txt")}catch(ex){console.log(ex)}Optional parameters can be passed via a hash:
varoptions={separator: /[\r]{0,1}\n/,fromBeginning: false,fsWatchOptions: {},follow: true,logger: console}newTail(fileToTail,options)separator: the line separator token (default:/[\r]{0,1}\n/to handle linux/mac (9+)/windows). Passnullfor binary files with no line separator.fsWatchOptions: the full set of options that can be passed tofs.watchas per node documentation (default:{}).fromBeginning: tail from the beginning of the file (default:false). IffromBeginningis truenLineswill be ignored.follow: simulatetail -Foption. In the case the file is moved/renamed/logrotated, if set totruewill start tailing again after a 1 second delay; if set tofalseit will emit an error event (default:true).logger: a logger object(default: no logger). The passed logger should follow the following signature:info([data][, ...])error([data][, ...])
nLines: tail from the last n lines. (default:undefined). Ignored iffromBeginningis set totrue.useWatchFile: if set totruewill force the use offs.watchFileover delegating to the library the choice betweenfs.watchandfs.watchFile(default:false).encoding: the file encoding (default:utf-8).flushAtEOF: set totrueto force flush of content when end of file is reached. Useful when there's no separator character at the end of the file (default:false).
Tail emits two events:
- line
tail.on("line",(data)=>{console.log(data)})- error
tail.on("error",(err)=>{console.log(err)})The error emitted is either the underlying exception or a descriptive string.
Node Tail code repo is here Tail is written in ES6. Pull Requests are welcome.
Tail was born as part of a data firehose. Read more about that project here. Tail originally was written in CoffeeScript. Since December 2020 it's pure ES6.
MIT. Please see License file for more details.
