UNPKG

@carlosbajo/roket-micro

Version:

framework para microservicios con google/pubsub

41 lines (35 loc) 1.59 kB
const googleLoggin = require('@google-cloud/logging'); const fs = require('fs'); const { name, version } = require(`${process.cwd()}/package.json`); // eslint-disable-line // const googleErrors = require('@google/cloud-errors'); const fileKey = fs.readFileSync(process.env.GOOGLE_APPLICATION_CREDENTIALS); // eslint-disable-line // const errors = googleErrors.start({ // ignoreEnvironmentCheck: true, // reportUncaughtExceptions: true, // serviceContext: { service: name, version } // }); const key = JSON.parse(fileKey); const isLocal = key.client_email.includes('local'); const rename = (val) => { let response; if (!val) return 'default'; if (isLocal) response = `local.${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);