packages/fxa-content-server/server/lib/logging/route_logging.js (48 lines of code) (raw):

/* eslint-disable camelcase */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ // Middleware to log the requests 'use strict'; const logger = require('./log')('server.requests'); const morgan = require('morgan'); const config = require('../configuration').getProperties(); const remoteAddress = require('fxa-shared/express/remote-address').remoteAddress( config.clientAddressDepth ); /** * Enhances connect logger middleware - custom formats. * See lib/configuration for usage. */ // Used when logging is disabled const disabled = function (req, res, next) { next(); }; function defaultFxaFormat(tokens, req, res) { const { clientAddress, addresses } = remoteAddress(req); return JSON.stringify({ clientAddress, contentLength: tokens.res(req, res, 'content-length'), method: tokens.method(req, res), path: tokens.url(req, res), referer: req.headers['referer'], remoteAddressChain: addresses, status: tokens.status(req, res), t: tokens['response-time'](req, res), userAgent: req.headers['user-agent'], }); } const formats = { default_fxa: defaultFxaFormat, dev_fxa: (tokens, req, res) => [ tokens.method(req, res), tokens.url(req, res), tokens['response-time'](req, res), tokens.status(req, res), ].join(' '), }; module.exports = function () { return config.disable_route_logging ? disabled : morgan(formats[config.route_log_format], { stream: { write: (x) => { const logBody = config.route_log_format === 'dev_fxa' ? x.trim() : JSON.parse(x); logger.info('route', logBody); }, }, }); };