UNPKG

@carlosbajo/roket-micro

Version:

framework para microservicios con google/pubsub

36 lines (32 loc) 1.65 kB
// const googleErrors = require('@google/cloud-errors'); const { name, version } = require(`${process.cwd()}/package.json`); // eslint-disable-line // const errors = googleErrors.start({ // ignoreEnvironmentCheck: true, // reportUncaughtExceptions: true, // serviceContext: { service: name, version } // }); module.exports = { googleError: () => { // const middleware = errors.koa; const middleware = {}; return middleware; }, koaLogger: (winstonInstance) => { const middleware = async (ctx, next) => { const start = new Date(); await next(); const { status } = ctx.response; if (!ctx.state) ctx.state = { usuario: undefined }; const ms = new Date() - start; if (status >= 500) { winstonInstance.error(`${ctx.request.method} ${ctx.request.originalUrl} ${status} waiting ${ms}ms info: ${JSON.stringify({ error: ctx.response.body, request: ctx.request.body })}${(ctx.state.usuario) ? ` By user ${ctx.state.usuario.id}` : ''}`); } else if (status >= 400) { winstonInstance.warn(`${ctx.request.method} ${ctx.request.originalUrl} ${status} waiting ${ms}ms info: ${JSON.stringify({ error: ctx.response.body, request: ctx.request.body })}${(ctx.state.usuario) ? ` By user ${ctx.state.usuario.id}` : ''}`); } else if (status >= 100) { if (ctx.request.originalUrl === '/_ah/health' || ctx.request.originalUrl === '/healthz') return; winstonInstance.info(`${ctx.request.method} ${ctx.request.originalUrl} ${status} waiting ${ms}ms${(ctx.state.usuario) ? ` By user ${ctx.state.usuario.id}` : ''}`); } }; return middleware; }, };