spserver/lib/logger.js

46 lines
1.2 KiB
JavaScript

'use strict';
var _ = require('lodash');
var bunyan = require('bunyan');
//Get the config
var config = require('./config');
//Create our variables
var env = config.get('NODE_ENV');
var output;
if (config.get('bunyan') || config.get(env + ':use_bunyan')) {
var settings = _.cloneDeep(config.get(env + ':bunyan'));
// Stream can be specified either in settings.streams[ix] or globally in settings.stream, but not
// both. Since the defaults specify stetings.stream, if the user specifies anything of vaulue
// in settings.streams, we should delete the global defaults, because bunyan gets angry if there
// are multiple keys
if (_.has(settings, 'streams')) {
if (settings.streams) {
delete settings.stream;
delete settings.level;
} else {
delete settings.streams;
}
}
_([settings.streams, settings])
.flatten()
.compact()
.forEach(function (settingObj) {
if (settingObj.stream === 'process.stdout') {
settingObj.stream = process.stdout;
} else if (settingObj.stream === 'process.stderr') {
settingObj.stream = process.stderr;
}
});
output = bunyan.createLogger(settings);
} else {
output = console;
output.debug = console.log.bind(console);
}
module.exports = output;