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