Skip to content

Commit

Permalink
Use finished module
Browse files Browse the repository at this point in the history
  • Loading branch information
dougwilson committed Jul 20, 2014
1 parent 3807dac commit 58f2d5b
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 32 deletions.
8 changes: 2 additions & 6 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

var auth = require('basic-auth')
var bytes = require('bytes');
var onFinished = require('finished')

/**
* Default log buffer duration.
Expand Down Expand Up @@ -87,8 +88,6 @@ exports = module.exports = function morgan(options) {
req._remoteAddress = req.connection && req.connection.remoteAddress;

function logRequest(){
res.removeListener('finish', logRequest);
res.removeListener('close', logRequest);
if (skip(req, res)) return;
var line = fmt(exports, req, res);
if (null == line) return;
Expand All @@ -98,13 +97,10 @@ exports = module.exports = function morgan(options) {
// immediate
if (immediate) {
logRequest();
// proxy end to output logging
} else {
res.on('finish', logRequest);
res.on('close', logRequest);
onFinished(res, logRequest)
}


next();
};
};
Expand Down
9 changes: 5 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
"repository": "expressjs/morgan",
"dependencies": {
"basic-auth": "1.0.0",
"bytes": "1.0.0"
"bytes": "1.0.0",
"finished": "~1.2.2"
},
"devDependencies": {
"istanbul": "0.3.0",
Expand All @@ -22,8 +23,8 @@
"node": ">= 0.8.0"
},
"scripts": {
"test": "mocha --check-leaks --require should --reporter spec --bail",
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --require should --reporter dot",
"test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --require should --reporter spec"
"test": "mocha --check-leaks --reporter spec --bail",
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot",
"test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec"
}
}
66 changes: 44 additions & 22 deletions test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,9 @@ describe('logger()', function () {
})

it('should use req.ip if there', function (done) {
var server = createServer({format: ':remote-addr'}, function (req) {
var server = createServer({format: ':remote-addr'}, function (req, res, next) {
req.ip = '10.0.0.1'
next()
})

request(server)
Expand Down Expand Up @@ -148,8 +149,9 @@ describe('logger()', function () {
})

it('should work when connection: keep-alive', function (done) {
var server = createServer({format: ':remote-addr'}, function (req) {
delete req._remoteAddress;
var server = createServer({format: ':remote-addr'}, function (req, res, next) {
delete req._remoteAddress
next()
})

request(server.listen())
Expand All @@ -164,9 +166,10 @@ describe('logger()', function () {
})

it('should not fail if req.connection missing', function (done) {
var server = createServer({format: ':remote-addr'}, function (req) {
delete req.connection;
delete req._remoteAddress;
var server = createServer({format: ':remote-addr'}, function (req, res, next) {
delete req.connection
delete req._remoteAddress
next()
})

request(server.listen())
Expand Down Expand Up @@ -238,8 +241,9 @@ describe('logger()', function () {
})

it('should be empty without hidden property', function (done) {
var server = createServer({format: ':response-time'}, function (req) {
delete req._startAt;
var server = createServer({format: ':response-time'}, function (req, res, next) {
delete req._startAt
next()
})

request(server)
Expand Down Expand Up @@ -296,6 +300,22 @@ describe('logger()', function () {
done()
})
})

it('should not exist for aborted request', function (done) {
var stream = {write: writeLog}
var server = createServer({format: ':status', stream: stream}, function () {
test.abort()
})

function writeLog(log) {
log.should.equal('-\n')
server.close()
done()
}

var test = request(server).post('/')
test.write('0')
})
})
})

Expand Down Expand Up @@ -368,8 +388,9 @@ describe('logger()', function () {
})

it('should color 500 red', function (done) {
var server = createServer({format: 'dev'}, function (req, res) {
var server = createServer({format: 'dev'}, function (req, res, next) {
res.statusCode = 500
next()
})

request(server)
Expand All @@ -384,8 +405,9 @@ describe('logger()', function () {
})

it('should color 400 yelow', function (done) {
var server = createServer({format: 'dev'}, function (req, res) {
var server = createServer({format: 'dev'}, function (req, res, next) {
res.statusCode = 400
next()
})

request(server)
Expand All @@ -400,8 +422,9 @@ describe('logger()', function () {
})

it('should color 300 cyan', function (done) {
var server = createServer({format: 'dev'}, function (req, res) {
var server = createServer({format: 'dev'}, function (req, res, next) {
res.statusCode = 300
next()
})

request(server)
Expand Down Expand Up @@ -570,20 +593,19 @@ function createLogger(opts) {

function createServer(opts, fn) {
var logger = createLogger(opts)
var middle = fn || function (req, res, next) { next() }
return http.createServer(function onRequest(req, res) {
logger(req, res, function onNext(err) {
if (fn) {
// allow req, res alterations
fn(req, res)
}

if (err) {
res.statusCode = 500
res.end(err.message)
}
// allow req, res alterations
middle(req, res, function onDone() {
if (err) {
res.statusCode = 500
res.end(err.message)
}

res.setHeader('X-Sent', 'true')
res.end((req.connection && req.connection.remoteAddress) || '-')
res.setHeader('X-Sent', 'true')
res.end((req.connection && req.connection.remoteAddress) || '-')
})
})
})
}

0 comments on commit 58f2d5b

Please sign in to comment.