Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lucagrulla/node-tail
The zero dependency Node.js module for tailing a file
https://github.com/lucagrulla/node-tail
coffeescript logs no-dependencies nodejs npm-package tail
Last synced: 3 days ago
JSON representation
The zero dependency Node.js module for tailing a file
- Host: GitHub
- URL: https://github.com/lucagrulla/node-tail
- Owner: lucagrulla
- License: mit
- Created: 2011-06-21T13:59:57.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2023-05-05T14:28:39.000Z (over 1 year ago)
- Last Synced: 2024-12-05T16:08:24.209Z (17 days ago)
- Topics: coffeescript, logs, no-dependencies, nodejs, npm-package, tail
- Language: JavaScript
- Homepage: https://www.lucagrulla.com/node-tail/
- Size: 1 MB
- Stars: 468
- Watchers: 21
- Forks: 76
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Tail
The **zero** dependency Node.js module for tailing a file
[![NPM](https://nodei.co/npm/tail.png?downloads=true&downloadRank=true)](https://nodei.co/npm/tail.png?downloads=true&downloadRank=true)
[![license](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/lucagrulla/node-tail/blob/master/LICENSE)
[![npm](https://img.shields.io/npm/v/tail.svg?style=plastic)](https://www.npmjs.com/package/tail)
![npm](https://img.shields.io/npm/dm/tail.svg)Made with ❤️ by [Luca Grulla](https://www.lucagrulla.com)
1. TOC
{:toc}## Installation
```bash
npm install tail
```## Use
```javascript
Tail = require("tail").Tail;tail = new Tail("fileToTail");
tail.on("line", function(data) {
console.log(data);
});tail.on("error", function(error) {
console.log("ERROR: ", error);
});
```If you want to stop tail:
```javascript
tail.unwatch()
```To start watching again:
```javascript
tail.watch()
```## Configuration
The only mandatory parameter is the path to the file to tail.
```javascript
var fileToTail = "/path/to/fileToTail.txt";
new Tail(fileToTail)
```If the file is **missing or invalid** ```Tail``` constructor will throw an Exception and won't initialize.
```javascript
try {
new Tail("missingFile.txt")
} catch (ex) {
console.log(ex)
}
```Optional parameters can be passed via a hash:
```javascript
var options= {separator: /[\r]{0,1}\n/, fromBeginning: false, fsWatchOptions: {}, follow: true, logger: console}
new Tail(fileToTail, options)
```### Constructor parameters
* `separator`: the line separator token (default: `/[\r]{0,1}\n/` to handle linux/mac (9+)/windows). Pass `null` for binary files with no line separator.
* `fsWatchOptions`: the full set of options that can be passed to `fs.watch` as per node documentation (default: `{}`).
* `fromBeginning`: tail from the beginning of the file (default: `false`). If `fromBeginning` is true `nLines` will be ignored.
* `follow`: simulate `tail -F` option. In the case the file is moved/renamed/logrotated, if set to `true` will start tailing again after a 1 second delay; if set to `false` it 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 if `fromBeginning` is set to `true`.
* `useWatchFile`: if set to `true` will force the use of `fs.watchFile` over delegating to the library the choice between `fs.watch` and `fs.watchFile` (default: `false`).
* `encoding`: the file encoding (default:`utf-8`).
* `flushAtEOF`: set to `true` to 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`).## Emitted events
`Tail` emits two events:
* line
```javascript
tail.on("line", (data) => {
console.log(data)
})
```* error
```javascript
tail.on("error", (err) => {
console.log(err)
})
```
The error emitted is either the underlying exception or a descriptive string.## How to contribute
Node Tail code repo is [here](https://github.com/lucagrulla/node-tail/)
Tail is written in ES6. Pull Requests are welcome.## History
Tail was born as part of a data firehose. Read more about that project [here](https://www.lucagrulla.com/posts/building-a-firehose-with-nodejs/).
Tail originally was written in [CoffeeScript](https://coffeescript.org/). Since December 2020 it's pure ES6.## License
MIT. Please see [License](https://github.com/lucagrulla/node-tail/blob/master/LICENSE) file for more details.