Adapt JSON output to the standard structure

This commit is contained in:
Daniel García Aubert
2020-07-21 16:36:23 +02:00
parent b32a073ac3
commit 3937b8c271
21 changed files with 51 additions and 96 deletions
+3 -3
View File
@@ -199,12 +199,12 @@ module.exports = class ApiRouter {
const apiRouter = router({ mergeParams: true });
const { paths, middlewares = [] } = route;
apiRouter.use(user(this.metadataBackend));
apiRouter.use(initLogger({ logger: this.serverOptions.logger }));
apiRouter.use(profiler({
enabled: this.serverOptions.useProfiler,
statsClient: global.statsClient
}));
apiRouter.use(user(this.metadataBackend));
middlewares.forEach(middleware => apiRouter.use(middleware()));
@@ -236,10 +236,10 @@ function createTemplateMaps ({ redisPool, surrogateKeysCache, logger }) {
const startTime = Date.now();
surrogateKeysCache.invalidate(new NamedMapsCacheEntry(user, templateName), (err) => {
if (err) {
return logger.error(err, `Named map (${templateName}) invalidation failed, user: ${user}`);
return logger.error({ error: err, 'cdb-user': user, template_id: templateName }, 'Named map invalidation failed');
}
logger.info({ user, type: 'named_map_invalidation', elapsed: Date.now() - startTime }, `Named map (${templateName}) invalidation success, user: ${user}`);
logger.info({ 'cdb-user': user, template_id: templateName, duration: (Date.now() - startTime) / 1000 }, 'Named map invalidation success');
});
}
+2 -4
View File
@@ -343,8 +343,7 @@ function incrementMapViews ({ metadataBackend }) {
mapConfigProvider.getMapConfig((err, mapConfig) => {
if (err) {
err.message = `Failed to increment mapview count for user '${user}'. ${err.message}`;
logger.warn({ error: err });
logger.warn({ error: err }, 'Failed to increment mapview count');
return next();
}
@@ -354,8 +353,7 @@ function incrementMapViews ({ metadataBackend }) {
metadataBackend.incMapviewCount(user, statTag, (err) => {
if (err) {
err.message = `Failed to increment mapview count for user '${user}'. ${err.message}`;
logger.warn({ error: err });
logger.warn({ error: err }, 'Failed to increment mapview count');
}
next();
+1 -2
View File
@@ -10,8 +10,7 @@ module.exports = function setCacheChannelHeader () {
mapConfigProvider.getAffectedTables((err, affectedTables) => {
if (err) {
err.message = `Error generating Cache Channel Header. ${err.message}`;
logger.warn({ error: err });
logger.warn({ error: err }, 'Error generating Cache Channel Header');
return next();
}
+1 -2
View File
@@ -44,8 +44,7 @@ module.exports = function setCacheControlHeader ({
mapConfigProvider.getAffectedTables((err, affectedTables) => {
if (err) {
err.message = `Error generating Cache Control Header. ${err.message}`;
logger.warn({ error: err });
logger.warn({ error: err }, 'Error generating Cache Control Header');
return next();
}
+1 -1
View File
@@ -7,7 +7,7 @@ module.exports = function errorMiddleware (/* options */) {
const { logger } = res.locals;
const errors = populateLimitErrors(Array.isArray(err) ? err : [err]);
logger.error({ error: errors });
errors.forEach((err) => logger.error({ error: err }, 'Error while handling the request'));
setCommonHeaders(req, res, () => {
const errorResponseBody = {
@@ -7,8 +7,7 @@ module.exports = function incrementMapViewCount (metadataBackend) {
metadataBackend.incMapviewCount(user, statTag, (err) => {
if (err) {
err.message = `Failed to increment mapview count for user '${user}'. ${err.message}`;
logger.warn({ error: err });
logger.warn({ error: err }, 'Failed to increment mapview count');
}
next();
+1 -2
View File
@@ -21,8 +21,7 @@ module.exports = function setLastModifiedHeader () {
mapConfigProvider.getAffectedTables((err, affectedTables) => {
if (err) {
err.message = `Error generating Last Modified Header. ${err.message}`;
logger.warn({ error: err });
logger.warn({ error: err }, 'Error generating Last Modified Header');
return next();
}
+3 -6
View File
@@ -4,12 +4,9 @@ const uuid = require('uuid');
module.exports = function initLogger ({ logger }) {
return function initLoggerMiddleware (req, res, next) {
const id = req.get('X-Request-Id') || uuid.v4();
res.locals.logger = logger.child({ id });
res.locals.logger.info({ request: req });
res.on('finish', () => res.locals.logger.info({ response: res }));
res.locals.logger = logger.child({ request_id: req.get('X-Request-Id') || uuid.v4(), 'cdb-user': res.locals.user });
res.locals.logger.info({ client_request: req }, 'Incoming request');
res.on('finish', () => res.locals.logger.info({ server_response: res, status: res.statusCode }, 'Response sent'));
next();
};
};
+1 -1
View File
@@ -23,7 +23,7 @@ module.exports = function metrics ({ enabled, tags, metricsBackend }) {
const { event, attributes } = getEventData(req, res, tags);
metricsBackend.send(event, attributes)
.catch((err) => logger.error(err, `Failed to publish event "${event}"`));
.catch((err) => logger.error({ error: err, event }, 'Failed to publish event'));
});
return next();
+2 -1
View File
@@ -21,7 +21,8 @@ module.exports = function profiler (options) {
res.on('finish', () => {
req.profiler.done('response');
req.profiler.end();
logger.info({ user: res.locals.user, stats: req.profiler.toJSON() });
const stats = req.profiler.toJSON();
logger.info({ stats, duration: stats.response / 1000 }, 'Request profiling stats');
try {
// May throw due to dns, see: http://github.com/CartoDB/Windshaft/issues/166
+1 -2
View File
@@ -17,8 +17,7 @@ module.exports = function setSurrogateKeyHeader ({ surrogateKeysCache }) {
mapConfigProvider.getAffectedTables((err, affectedTables) => {
if (err) {
err.message = `Erros generating Surrogate Key Header. ${err.message}`;
logger.warn({ error: err });
logger.warn({ error: err }, 'Error generating Surrogate Key Header');
return next();
}
+1 -1
View File
@@ -8,7 +8,7 @@ module.exports = function tag ({ tags }) {
return function tagMiddleware (req, res, next) {
const { logger } = res.locals;
res.locals.tags = tags;
res.on('finish', () => logger.info({ tags: res.locals.tags }));
res.on('finish', () => logger.info({ tags: res.locals.tags }, 'Request tagged'));
next();
};
-2
View File
@@ -6,10 +6,8 @@ module.exports = function user (metadataBackend) {
const cdbRequest = new CdbRequest();
return function userMiddleware (req, res, next) {
const { logger } = res.locals;
try {
res.locals.user = getUserNameFromRequest(req, cdbRequest);
logger.info({ user: res.locals.user });
} catch (err) {
return next(err);
}