@carlosbajo/roket-micro
Version:
framework para microservicios con google/pubsub
36 lines (32 loc) • 1.65 kB
JavaScript
// 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;
},
};