@carlosbajo/roket-micro
Version:
framework para microservicios con google/pubsub
41 lines (35 loc) • 1.59 kB
JavaScript
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);