Socket
Socket
Sign inDemoInstall

logfmt

Package Overview
Dependencies
Maintainers
1
Versions
41
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

logfmt - npm Package Compare versions

Comparing version 0.12.0 to 0.13.0

lib/request_logger.js

8

examples/express_buffered.js

@@ -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));

1

examples/express_pipe_to_stdout.js

@@ -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");

3

examples/restify_pipe_to_stdout.js

@@ -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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc