UNPKG

@carlosbajo/micro

Version:

framework para microservicios con google/pubsub

62 lines (56 loc) 1.5 kB
'use strict'; const googleLoggin = require('@google-cloud/logging'); const { name, version } = require(`${process.cwd()}/package.json`); // eslint-disable-line const GoogleErrors = require('@google-cloud/error-reporting'); const errors = new GoogleErrors({ ignoreEnvironmentCheck: true, reportUncaughtExceptions: true, serviceContext: { service: name, version, }, }); const isLocal = process.env.NODE_ENV === 'development'; const rename = val => { let response; if (!val) return 'default'; if (isLocal) response = `${process.env.NODE_ENV}.${val}`; else response = val; return response; }; const loggingClient = googleLoggin(); const logFunction = gLog => async( logName, userId, metadata, level = 'write' ) => { const type = { type: 'container', labels: { cluster_name: rename(process.env.CLUSTER_NAME), namespace_id: process.env.NAMEPSACE || 'default', }, }; const log = loggingClient.log(name); const data = { resource: type, }; const payload = { delegate: userId, data: metadata, route: logName, }; const entry = log.entry(data, payload); log[level](entry) .then(() => { gLog.info( `Logged to: ${JSON.stringify(data)}, value: ${JSON.stringify(payload)}` ); // eslint-disable-line }) .catch(err => { gLog.error('Google-loggin error:', err); // eslint-disable-line errors.report(new Error(err)); }); }; module.exports = logger => logFunction(logger);