Comparing version 0.9.2 to 0.10.0
@@ -40,3 +40,7 @@ | ||
try { | ||
req.body = options.parser(buf); | ||
var lines = [] | ||
buf.split("\n").forEach(function(line){ | ||
lines.push(options.parser(line)) | ||
}) | ||
req.body = lines; | ||
} catch (err) { | ||
@@ -43,0 +47,0 @@ err.body = buf; |
@@ -1,74 +0,24 @@ | ||
var split = require('split'); | ||
var through = require('through'); | ||
var parse = require('./lib/logfmt_parser').parse; | ||
exports.parse = parse; | ||
exports.stream = process.stdout; | ||
exports.log = function(data, stream) { | ||
if(stream == undefined) stream = exports.stream; | ||
var logger = require('./lib/logger'); | ||
exports.log = logger.log; | ||
exports.time = logger.time; | ||
var line = ''; | ||
Object.keys(data).forEach(function(key){ | ||
var value = data[key].toString(); | ||
if(value.indexOf(' ') > -1) value = '"' + value + '"'; | ||
line += key + '=' + value + ' '; | ||
}) | ||
//trim traling space and print w. newline | ||
stream.write(line.substring(0,line.length-1) + "\n"); | ||
} | ||
//Syncronous Body Parser | ||
var bodyParser = require('./lib/body_parser') | ||
var logfmtBodyParser = function (body) { | ||
var lines = [] | ||
body.split("\n").forEach(function(line){ | ||
lines.push(parse(line)) | ||
}) | ||
return lines; | ||
} | ||
exports.bodyParser = function(options) { | ||
if(options == null) options = {}; | ||
var mime = options.contentType || "application/logplex-1" | ||
return bodyParser({contentType: mime, parser: logfmtBodyParser}) | ||
return bodyParser({contentType: mime, parser: parse}) | ||
} | ||
//Stream Body Parser | ||
var Readable = require('readable-stream').Readable; | ||
var bodyParserStream = function(options){ | ||
var bodyParserStream = require('./lib/body_parser_stream'); | ||
exports.bodyParserStream = function(options) { | ||
if(options == null) options = {}; | ||
var mime = options.contentType || "application/logplex-1"; | ||
return function(req, res, next) { | ||
//setup | ||
if (req._body) return next(); | ||
var is_mime = req.get('content-type') === mime; | ||
if (!is_mime) return next(); | ||
req._body = true; | ||
//define Readable body Stream | ||
req.body = new Readable({ objectMode: true }); | ||
req.body._read = function(n) { | ||
req.body._paused = false; | ||
}; | ||
function parseLine(line) { | ||
if(line) { | ||
var parsedLine = parse(line); | ||
if(!req.body._paused) req.body._paused = !req.body.push(parsedLine); | ||
} | ||
} | ||
function end() { req.body.push(null); } | ||
req.pipe(split()).pipe(through(parseLine, end)); | ||
return next(); | ||
} | ||
var mime = options.contentType || "application/logplex-1" | ||
return bodyParserStream({contentType: mime, parser: parse}) | ||
} | ||
exports.bodyParserStream = bodyParserStream; |
{ | ||
"name": "logfmt", | ||
"version": "0.9.2", | ||
"version": "0.10.0", | ||
"description": "Key-Value log line parser", | ||
@@ -5,0 +5,0 @@ "main": "logfmt.js", |
@@ -46,5 +46,65 @@ # node-logfmt | ||
### `logfmt.time([label], [data], callback(logger))` | ||
#### `logger.log([data], [stream])` | ||
Log how long something takes. | ||
- `label`: optional name for the milliseconds key (defaults to `elapsed`) | ||
- `data`: optional extra data to include with every call to `logger.log` | ||
- `logger`: object passed to callback with a `log` function | ||
No args defaults to `elapsed=<milliseconds>ms` | ||
```javascript | ||
logfmt.time(function(logger){ | ||
logger.log(); | ||
}) | ||
//=> elapsed=1ms | ||
``` | ||
String `label` changes the key `<string>=<milliseconds>ms` | ||
```javascript | ||
logfmt.time('time', function(logger){ | ||
logger.log(); | ||
logger.log(); | ||
}) | ||
//=> time=1ms | ||
//=> time=2ms | ||
``` | ||
Data can be passed to `logger.log` | ||
```javascript | ||
logfmt.time(function(logger){ | ||
logger.log({foo: 'bar'}); | ||
}) | ||
//=> foo=bar elapsed=1ms | ||
``` | ||
Data can also be passed to `logfmt.time` and will persist | ||
across calls to `logger.log` | ||
```javascript | ||
logfmt.time('thing', {foo: 'bar'}, function(logger){ | ||
logger.log({at: 'function.start'}); | ||
logger.log({at: 'function.end'}); | ||
}) | ||
//=> at=function.start foo=bar thing=1ms | ||
//=> at=function.end foo=bar thing=2ms | ||
``` | ||
You do not need a `label` to pass data to `logfmt.time` | ||
```javascript | ||
logfmt.time({foo: 'bar'}, function(logger){ | ||
logger.log({at: 'function'}); | ||
}) | ||
//=> at=function foo=bar elapsed=1ms | ||
``` | ||
### customizing logging location | ||
`log()` Accepts as 2nd arg anything that responds to `write(string)` | ||
`logfmt.log()` and `logger.log()` Accepts as 2nd argument anything that responds to `write(string)` | ||
```javascript | ||
@@ -56,3 +116,3 @@ var logfmt = require('logfmt'); | ||
Overwrite the default location by setting `.stream` | ||
Overwrite the default global location by setting `logfmt.stream` | ||
```javascript | ||
@@ -59,0 +119,0 @@ var logfmt = require('logfmt'); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
18088626
31
533
237
6