logdir v0.0.3
logdir
dump text streams into a directory and read the data back intelligently
example
You can just create some writable streams and read the data back for a single file:
var logdir = require('logdir');
var ld = logdir('/tmp/logdir');
var ws = ld.createWriteStream('robot');
ld.open('robot').follow(-5).pipe(process.stdout);
ws.write('beep boop\n');$ node example/log.js
1366537631914 beep boop
1366537651318 beep boop
1366537657376 beep boopor you can handle multiple log files at once:
var logdir = require('logdir');
var ld = logdir('/tmp/logdir');
var a = ld.createWriteStream('a');
var b = ld.createWriteStream('b');
setInterval(function () {
a.write(String.fromCharCode(Math.random() * 26 + 97) + '\n');
}, 1000);
setInterval(function () {
b.write(String.fromCharCode(Math.random() * 26 + 65) + '\n');
}, 1000);
ld.open([ 'a', 'b' ]).follow(-5).pipe(process.stdout);$ node example/many.js
a 1366537714837 v
b 1366537714838 Z
a 1366537715837 o
b 1366537715838 N
a 1366537716839 u
b 1366537716839 O
a 1366537717839 z
b 1366537717839 Xor you can even follow files that don't exist yet:
var logdir = require('logdir');
var ld = logdir('/tmp/logdir');
ld.open().follow(-5).pipe(process.stdout);$ node all.js &
[1] 8545
$ echo $(node -pe 'Date.now()') beep >> /tmp/logdir/newfile
newfile 1366537884613 beep
$ echo $(node -pe 'Date.now()') boop >> /tmp/logdir/newfile
newfile 1366537892127 boop
$ echo $(node -pe 'Date.now()') whoa >> /tmp/logdir/anotherfile
anotherfile 1366537899027 whoa
$ kill %%methods
var logdir = require('logdir')var ld = logdir(dir)
Create a new logdir instance ld from a directory dir.
var sf = ld.open(names)
Create a slice-file handle sf to
operate on all the names collectively.
If names is:
- a string - only slice a single log file of its name
- an array - slice the combined output of each log file, prepending
"$name "to the output stream - undefined - slice the combined output of each log file in the directory and
watch the directory for new files when running
.follow()
sf.slice(begin, end)
Like [].slice(), but returns a stream of the line numbers that satisfy the
begin and end constraints.
This method comes from the underlying slice-file module but may act on multiple files at once intelligently.
sf.follow(begin, end)
Returns an sf.slice() stream but watches the file and outputs all new content,
like tail -f.
This method comes from the underlying slice-file module but may act on multiple files at once intelligently.
install
With npm do:
npm install logdirlicense
MIT
