Comparing version 0.12.0 to 0.13.0
@@ -9,2 +9,10 @@ var app = require('express')(); | ||
app.use(logfmt.requestLogger(function(req,res){ | ||
return { | ||
"method" : req.method, | ||
"content-type" : req.headers['content-type'], | ||
"status" : res.statusCode | ||
} | ||
})) | ||
app.post('/logs', function(req, res){ | ||
@@ -11,0 +19,0 @@ console.log('HEADERS: ' + JSON.stringify(req.headers)); |
@@ -8,2 +8,3 @@ var app = require('express')(); | ||
app.use(logfmt.bodyParserStream()); | ||
app.use(logfmt.requestLogger()); | ||
@@ -10,0 +11,0 @@ app.post('/logs', function(req, res){ |
@@ -10,2 +10,15 @@ var restify = require('restify'); | ||
server.use(function(req,res,next){ | ||
logfmt.time(function(logger){ | ||
var request_data = { | ||
"method" : req.method, | ||
"content-type" : req.headers['content-type'], | ||
"status" : res.statusCode | ||
} | ||
next(); | ||
logger.log(request_data); | ||
}) | ||
}) | ||
server.post('/logs', function(req, res, next){ | ||
@@ -20,1 +33,2 @@ req.body.forEach(function(line){ | ||
server.listen(3000); | ||
console.log("server listening on port 3000"); |
@@ -10,2 +10,3 @@ var restify = require('restify'); | ||
server.use(logfmt.bodyParserStream()); | ||
server.use(logfmt.requestLogger()); | ||
@@ -16,3 +17,3 @@ server.post('/logs', function(req, res, next){ | ||
})) | ||
res.send(200, 'OK'); | ||
res.send(201, 'OK'); | ||
return next(); | ||
@@ -19,0 +20,0 @@ }) |
@@ -10,2 +10,4 @@ var parse = require('./lib/logfmt_parser').parse; | ||
exports.requestLogger = require('./lib/request_logger'); | ||
//Syncronous Body Parser | ||
@@ -12,0 +14,0 @@ var bodyParser = require('./lib/body_parser') |
{ | ||
"name": "logfmt", | ||
"version": "0.10.0", | ||
"version": "0.13.0", | ||
"dependencies": { | ||
@@ -5,0 +5,0 @@ "split": { |
{ | ||
"name": "logfmt", | ||
"version": "0.12.0", | ||
"version": "0.13.0", | ||
"description": "Key-Value log line parser", | ||
@@ -5,0 +5,0 @@ "main": "logfmt.js", |
@@ -126,6 +126,70 @@ # node-logfmt | ||
``` | ||
## express/restify logging middleware | ||
## express/restify middleware | ||
```javascript | ||
app.use(logfmt.requestLogger()); | ||
//=> ip=127.0.0.1 time=2013-08-05T20:50:19.216Z method=POST path=/logs status=200 content_length=337 content_type=application/logplex-1 elapsed=4ms | ||
``` | ||
#### `logfmt.requestLogger([options], [formatter(req, res)])` | ||
Defaults to timing the request and logging the HTTP method, status code, and content-type. | ||
Valid Options: | ||
- `immediate`: log before call to `next()` (ie: before the request finishes) | ||
- `elapsed`: renames the `elapsed` key to a key of your choice when in | ||
non-immediate mode | ||
Defaults to `immediate: true` and `elapsed: 'elapsed'` | ||
```javascript | ||
app.use(logfmt.requestLogger({immediate: true}, function(req, res){ | ||
return { | ||
method: req.method | ||
} | ||
})); | ||
//=> method=POST | ||
``` | ||
```javascript | ||
app.use(logfmt.requestLogger({elapsed: 'request.time'}, function(req, res){ | ||
return { | ||
"request.method": req.method | ||
} | ||
})); | ||
//=> request.method=POST request.time=12ms | ||
``` | ||
##### `formater(req, res)` | ||
A formatter takes the request and response and returns a JSON object for `logfmt.log` | ||
```javascript | ||
app.use(logfmt.requestLogger(function(req, res){ | ||
return { | ||
method: req.method | ||
} | ||
})); | ||
//=> method=POST elapsed=4ms | ||
``` | ||
If no formatter is supplied it will default to `logfmt.requestLogger.commonFormatter` which is based | ||
on having similiar fields to the Apache Common Log format. | ||
```javascript | ||
app.use(logfmt.requestLogger(function(req, res){ | ||
var data = logfmt.requestLogger.commonFormatter(req, res) | ||
return { | ||
ip: data.ip, | ||
time: data.time, | ||
foo: 'bar' | ||
}; | ||
})); | ||
//=> ip=127.0.0.1 time=2013-08-05T20:50:19.216Z foo=bar elapsed=4ms | ||
``` | ||
## express/restify parsing middleware | ||
```javascript | ||
// streaming | ||
@@ -132,0 +196,0 @@ app.use(logfmt.bodyParserStream()); |
var logfmt = require('../logfmt'), | ||
assert = require('assert'); | ||
var mock_sink = { | ||
logline: '', | ||
write: function(string) { | ||
this.logline = string; | ||
} | ||
} | ||
var OutStream = require('./outstream'); | ||
logfmt.stream = mock_sink; | ||
suite('logfmt.time', function() { | ||
setup(function(){ | ||
logfmt.stream = new OutStream; | ||
}) | ||
suite('logfmt.time', function() { | ||
test("logs the time", function(done){ | ||
logfmt.time(function(logger){ | ||
logger.log(); | ||
var actual = mock_sink.logline; | ||
var actual = logfmt.stream.logline; | ||
assert(/^elapsed=\dms\n$/.test(actual), actual) | ||
@@ -26,3 +23,3 @@ done(); | ||
logger.log(); | ||
var actual = mock_sink.logline; | ||
var actual = logfmt.stream.logline; | ||
assert(/^time=\dms\n$/.test(actual), actual) | ||
@@ -36,3 +33,3 @@ done(); | ||
logger.log(); | ||
var actual = mock_sink.logline; | ||
var actual = logfmt.stream.logline; | ||
assert(/^foo=bar time=\dms\n$/.test(actual), actual) | ||
@@ -46,6 +43,6 @@ done(); | ||
logger.log(); | ||
var actual = mock_sink.logline; | ||
var actual = logfmt.stream.logline; | ||
assert(/^foo=bar elapsed=\dms\n$/.test(actual), actual) | ||
logger.log({moar: 'data'}); | ||
var actual = mock_sink.logline; | ||
var actual = logfmt.stream.logline; | ||
assert(/^moar=data foo=bar elapsed=\dms\n$/.test(actual), actual) | ||
@@ -62,3 +59,3 @@ done(); | ||
logger.log(); | ||
var actual = mock_sink.logline; | ||
var actual = logfmt.stream.logline; | ||
assert(/^elapsed=2\dms\n$/.test(actual), actual) | ||
@@ -74,3 +71,3 @@ done(); | ||
logger.log({foo: 'bar'}); | ||
var actual = mock_sink.logline; | ||
var actual = logfmt.stream.logline; | ||
assert(/^foo=bar time=\dms\n$/.test(actual), actual) | ||
@@ -82,2 +79,3 @@ done(); | ||
test("supports log(data, stream) interface", function(done){ | ||
var mock_sink = new OutStream; | ||
logfmt.time(function(logger){ | ||
@@ -95,2 +93,3 @@ logger.log({foo: 'bar'}, mock_sink); | ||
test("can log twice", function(done){ | ||
var mock_sink = new OutStream; | ||
logfmt.time(function(logger){ | ||
@@ -101,3 +100,3 @@ logger.log({foo: 'bar'}, mock_sink); | ||
var wrapped = function() { | ||
logger.log({bar: 'foo'}); | ||
logger.log({bar: 'foo'}, mock_sink); | ||
var actual = mock_sink.logline; | ||
@@ -104,0 +103,0 @@ assert(/^bar=foo elapsed=2\dms\n$/.test(actual), actual) |
var logfmt = require('../logfmt'), | ||
assert = require('assert'); | ||
var mock_sink = { | ||
logline: '', | ||
write: function(string) { | ||
this.logline = string; | ||
} | ||
} | ||
var OutStream = require('./outstream'); | ||
var mock_sink = new OutStream; | ||
@@ -53,8 +49,8 @@ suite('logfmt.log', function() { | ||
var data = {foo: "hello kitty"} | ||
var sink = logfmt.sink; | ||
var stream = logfmt.stream; | ||
logfmt.stream = mock_sink; | ||
logfmt.log(data); | ||
assert.equal("foo=\"hello kitty\"\n", mock_sink.logline) | ||
logfmt.stream = sink; | ||
logfmt.stream = stream; | ||
}) | ||
}) |
var logfmt = require('../logfmt'), | ||
assert = require('assert'); | ||
var mock_sink = { | ||
logline: '', | ||
write: function(string) { | ||
this.logline = string; | ||
} | ||
} | ||
var OutStream = require('./outstream'); | ||
var mock_sink = new OutStream; | ||
@@ -11,0 +7,0 @@ suite('logfmt.parse(logfmt.log)', function(){ |
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
38
1040
311
44880