Skip to content

Instantly share code, notes, and snippets.

@hcharley
Last active June 1, 2017 00:32
Show Gist options
  • Save hcharley/e7b3e469814e18fb264e356e826ac1f1 to your computer and use it in GitHub Desktop.
Save hcharley/e7b3e469814e18fb264e356e826ac1f1 to your computer and use it in GitHub Desktop.
Logging config in JS
/**
* utils.js
*/
import Radio from 'backbone.radio';
var CHANNEL = Radio.channel('quickpost-app');
var my_util_function = function() {
var logger = CHANNEL.request('get_logger', 'utils');
logger.info('An info message on the utils logger');
logger.debug('A debug message on the utils logger');
logger.warn('A warn message on the utils logger');
};
module.exports = {
my_util_function: my_util_function
}
/**
* app.js
*/
import log from 'loglevel';
import log_message_prefix from 'loglevel-message-prefix';
import Radio from 'backbone.radio';
import Mn from 'backbone.marionette';
var CHANNEL = Radio.channel('quickpost-app');
module.exports = Mn.Application.extend({
logger_prefix: 'qp-',
loggers: {
app: { level: 'trace' },
utils: { level: 'error' },
router: { level: 'warn' },
card_detail: { level: 'debug' },
dashboard: { level: 'error' },
},
onStart: function() {
this.create_loggers();
this.logger = CHANNEL.request('get_logger', 'app');
this.logger.info('A log message on the app logger');
},
create_loggers: function() {
this._loggers = {};
_.each(this.loggers, (options, logger_name) => {
logger_name = `${this.logger_prefix}-${logger_name}`;
var logger = log.getLogger(logger_name);
if(options.level) {
logger.setLevel(options.level);
}
/* Prefix log messages */
log_message_prefix(logger, {
prefixes: ['level'],
staticPrefixes: [logger_name.toUpperCase()]
});
this._loggers[logger_name] = logger;
});
CHANNEL.reply('get_logger', (logger_name) => {
var default_logger = this._loggers['qp-app'];
default_logger.debug(`Getting logger ${logger_name}`);
/* Remove the prefix if its on, and add it back so that this function can optionally accept the prefix */
logger_name = logger_name.replace(new RegExp("/^(" + this.logger_prefix + "\.)/"),'');
logger_name = this.logger_prefix + logger_name;
/* Get the logger using the name and prefix as the key */
var logger = this._loggers[logger_name];
/* If the logger couldn't be found, fallback to the app logger */
if(!logger) {
logger = default_logger;
logger.warn(`No logger found for ${logger_name}. Falling back to the default logger.`);
}
return logger;
});
},
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment