fluent-logger
Advanced tools
Comparing version 2.0.1 to 2.1.0
@@ -6,2 +6,3 @@ 'use strict'; | ||
var net = require('net'); | ||
var stream = require('stream'); | ||
var crypto = require('crypto'); | ||
@@ -230,4 +231,39 @@ var FluentLoggerError = require('./logger-error'); | ||
FluentSender.prototype.toStream = function(options) { | ||
if (typeof options === 'string') { | ||
options = {label: options}; | ||
} else { | ||
options = options || {}; | ||
} | ||
var label = options.label; | ||
if (!label) { | ||
throw new Error('label is needed'); | ||
} | ||
var defaultEncoding = options.encoding || 'UTF-8'; | ||
var self = this; | ||
var writable = new stream.Writable(); | ||
var dataString = ''; | ||
writable._write = function(chunk, encoding, callback) { | ||
var dataArray = chunk.toString(defaultEncoding).split(/\n/); | ||
function next() { | ||
if (dataArray.length) { | ||
dataString += dataArray.shift(); | ||
} | ||
if (!dataArray.length) { | ||
return process.nextTick(callback); | ||
} | ||
self.emit(label, dataString, function(err) { | ||
if (err) { | ||
return self._handleError(err, 'error', callback); | ||
} | ||
dataString = ''; | ||
next(); | ||
}); | ||
} | ||
next(); | ||
}; | ||
return writable; | ||
}; | ||
module.exports = exports = {}; | ||
exports.FluentSender = FluentSender; |
{ | ||
"name": "fluent-logger", | ||
"version": "2.0.1", | ||
"version": "2.1.0", | ||
"main": "./lib/index.js", | ||
"scripts": { | ||
"test": "./node_modules/.bin/mocha -t 10000 --recursive" | ||
"test": "mocha -t 10000 --recursive" | ||
}, | ||
@@ -8,0 +8,0 @@ "author": { |
@@ -140,2 +140,18 @@ # fluent-logger for Node.js | ||
### stream | ||
Several libraries use stream as output. | ||
```js | ||
var sender = require('fluent-logger').createFluentSender('tag_prefix', { | ||
host: 'localhost', | ||
port: 24224, | ||
timeout: 3.0, | ||
reconnectInterval: 600000 // 10 minutes | ||
}); | ||
var logger = new Console(sender.toStream('stdout'), sender.toStream('stderr')); | ||
logger.log('this log record is sent to fluent daemon'); | ||
``` | ||
## Options | ||
@@ -142,0 +158,0 @@ |
var expect = require('chai').expect; | ||
var sender = require('../lib/sender'); | ||
var runServer = require('../lib/testHelper').runServer; | ||
var stream = require('stream'); | ||
var async = require('async'); | ||
@@ -459,2 +460,27 @@ var EventEmitter = require('events').EventEmitter; | ||
}); | ||
it('should write stream.', function(done) { | ||
runServer({}, function(server, finish) { | ||
var s = new sender.FluentSender('debug', { port: server.port }); | ||
var ss = s.toStream('record'); | ||
var pt = new stream.PassThrough(); | ||
pt.pipe(ss); | ||
pt.push('data1\n'); | ||
pt.push('data2\ndata'); | ||
pt.push('3\ndata4\n'); | ||
pt.end(); | ||
ss.on('finish', function() { | ||
s.end(null, null, function() { | ||
finish(function(data) { | ||
expect(data[0].data).to.be.equal('data1'); | ||
expect(data[1].data).to.be.equal('data2'); | ||
expect(data[2].data).to.be.equal('data3'); | ||
expect(data[3].data).to.be.equal('data4'); | ||
done(); | ||
}); | ||
}); | ||
}); | ||
}); | ||
}); | ||
}); |
51914
1080
216