mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-02 15:55:08 +03:00
0107ac848a
- Currently, we create a request ID for internal use if one isn't set & this is used in logs - If a custom request ID is set via X-Request-ID header, this gets logged, however, we don't return this with the response - Means that a custom ID gets lost on the way back out, and makes tracing requests through a system trickier - This change ensures that if X-Request-ID is set on the request, it is also set on the response so that requests can be properly traced - It's easy to set this in e.g. nginx so that the feature becomes available - Ghost doens't need to do this - Note: also split request id handling out into new middleware
27 lines
757 B
JavaScript
27 lines
757 B
JavaScript
const common = require('../../../lib/common');
|
|
|
|
/**
|
|
* @TODO: move this middleware to ignition?
|
|
*/
|
|
module.exports = function logRequest(req, res, next) {
|
|
const startTime = Date.now();
|
|
|
|
function logResponse() {
|
|
res.responseTime = (Date.now() - startTime) + 'ms';
|
|
req.userId = req.user ? (req.user.id ? req.user.id : req.user) : null;
|
|
|
|
if (req.err && req.err.statusCode !== 404) {
|
|
common.logging.error({req: req, res: res, err: req.err});
|
|
} else {
|
|
common.logging.info({req: req, res: res});
|
|
}
|
|
|
|
res.removeListener('finish', logResponse);
|
|
res.removeListener('close', logResponse);
|
|
}
|
|
|
|
res.on('finish', logResponse);
|
|
res.on('close', logResponse);
|
|
next();
|
|
};
|