Skip to content

Commit 82ddc07

Browse files
committed
Started reader
1 parent a6035b8 commit 82ddc07

File tree

3 files changed

+62
-13
lines changed

3 files changed

+62
-13
lines changed

examples/file.log

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
[Sun, 26 Sep 2010 01:10:23 GMT] DEBUG a debug message
2-
[Sun, 26 Sep 2010 01:10:23 GMT] INFO a info message
3-
[Sun, 26 Sep 2010 01:10:23 GMT] NOTICE a notice message
4-
[Sun, 26 Sep 2010 01:10:23 GMT] WARNING a warning message
5-
[Sun, 26 Sep 2010 01:10:23 GMT] ERROR a error message
6-
[Sun, 26 Sep 2010 01:10:23 GMT] CRITICAL a critical message
7-
[Sun, 26 Sep 2010 01:10:23 GMT] ALERT a alert message
8-
[Sun, 26 Sep 2010 01:10:23 GMT] EMERGENCY a emergency message
1+
[Sun, 26 Sep 2010 01:26:14 GMT] DEBUG a debug message
2+
[Sun, 26 Sep 2010 01:26:14 GMT] INFO a info message
3+
[Sun, 26 Sep 2010 01:26:14 GMT] NOTICE a notice message
4+
[Sun, 26 Sep 2010 01:26:14 GMT] WARNING a warning message
5+
[Sun, 26 Sep 2010 01:26:14 GMT] ERROR a error message
6+
[Sun, 26 Sep 2010 01:26:14 GMT] CRITICAL a critical message
7+
[Sun, 26 Sep 2010 01:26:14 GMT] ALERT a alert message
8+
[Sun, 26 Sep 2010 01:26:14 GMT] EMERGENCY a emergency message

examples/reader.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
2+
/**
3+
* Module dependencies.
4+
*/
5+
6+
var Log = require('../lib/log')
7+
, fs = require('fs')
8+
, stream = fs.createReadStream(__dirname + '/file.log')
9+
, log = new Log('debug', stream);
10+
11+
log.on('line', function(line){
12+
console.log(line);
13+
});;

lib/log.js

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11

22
/*!
3-
* Log.js
4-
* Copyright(c) 2010 TJ Holowaychuk <tj@vision-media.ca>
5-
* MIT Licensed
6-
*/
3+
* Log.js
4+
* Copyright(c) 2010 TJ Holowaychuk <tj@vision-media.ca>
5+
* MIT Licensed
6+
*/
7+
8+
/**
9+
* Module dependencies.
10+
*/
11+
12+
var EventEmitter = require('events').EventEmitter;
713

814
/**
915
* Initialize a `Loggeer` with the given log `level` defaulting
@@ -18,8 +24,15 @@ var Log = exports = module.exports = function Log(level, stream){
1824
if ('string' == typeof level) level = exports[level.toUpperCase()];
1925
this.level = level || exports.DEBUG;
2026
this.stream = stream || process.stdout;
27+
if (stream.readable) this.read();
2128
};
2229

30+
/**
31+
* Inherit from `EventEmitter`.
32+
*/
33+
34+
Log.prototype.__proto__ = EventEmitter.prototype;
35+
2336
/**
2437
* System is unusable.
2538
*
@@ -89,7 +102,30 @@ exports.DEBUG = 7;
89102
*/
90103

91104
Log.prototype = {
92-
105+
106+
/**
107+
* Start emitting "line" events.
108+
*
109+
* @api public
110+
*/
111+
112+
read: function(){
113+
var self = this;
114+
this.stream.setEncoding('ascii');
115+
this.stream.on('data', function(chunk){
116+
chunk.split('\n').map(function(line){
117+
var captures = line.match(/^\[([^\]]+)\] (\w+) (.*)/);
118+
var obj = {
119+
date: new Date(captures[1])
120+
, level: exports[captures[2]]
121+
, levelString: captures[2]
122+
, msg: captures[3]
123+
};
124+
self.emit('line', line);
125+
});
126+
});
127+
},
128+
93129
/**
94130
* Log output message.
95131
*

0 commit comments

Comments
 (0)