3v324v23's picture
Add PNG files and track with Git LFS
befd7da
'use strict';
const _ = require('lodash');
const bunyan = require('bunyan');
const raven = require('raven');
const sentryStream = require('bunyan-sentry-stream');
const PrettyStream = require('bunyan-prettystream');
const SensitiveDataStream = require('./streams/sensitive-data');
const serializers = require('./serializers');
const defaultConfig = {
logger: {
name: process.env.LOGGER_NAME || 'Development logger',
level: process.env.LOGGER_LEVEL || 'info',
pretty: process.env.USE_BUNYAN_PRETTY_STREAM === 'true',
hideSensitiveData: process.env.LOGGER_USE_SENSITIVE_DATA_STREAM !== 'false',
sensitiveDataPattern: process.env.LOGGER_SENSITIVE_DATA_PATTERN,
},
sentry: {
dsn: process.env.SENTRY_DSN,
release: undefined,
environment: process.env.NODE_ENV || 'development',
},
};
function init(config) {
const finalConfig = _.defaultsDeep(config, defaultConfig);
const loggerName = finalConfig.logger.name;
const loggerLevel = finalConfig.logger.level;
const loggerConfig = {
name: loggerName,
level: loggerLevel,
streams: [],
serializers: {
err: serializers.err,
},
};
if (finalConfig.logger.pretty) {
const prettyStdOut = new PrettyStream();
prettyStdOut.pipe(process.stdout);
loggerConfig.streams.push({
type: 'raw',
level: loggerLevel,
stream: prettyStdOut,
});
} else if (finalConfig.logger.hideSensitiveData) {
loggerConfig.streams.push({
level: loggerLevel,
stream: new SensitiveDataStream(finalConfig.logger.sensitiveDataPattern),
});
} else {
loggerConfig.streams.push({ level: loggerLevel, stream: process.stdout });
}
if (finalConfig.sentry && finalConfig.sentry.dsn) {
const client = new raven.Client(finalConfig.sentry.dsn, {
name: loggerName,
release: finalConfig.sentry.release,
environment: finalConfig.sentry.environment,
});
client.install();
loggerConfig.streams.push(sentryStream(client));
}
return bunyan.createLogger(loggerConfig);
}
const logger = init(defaultConfig);
module.exports = logger;
module.exports.init = init;