ravel
Version:
Ravel Rapid Application Development Framework
115 lines (92 loc) • 3.87 kB
JavaScript
'use strict';
const intel = require('intel');
const ApplicationError = require('../util/application_error');
const sLogger = Symbol.for('_logger');
/**
* Log levels for Ravel. View source for more information.
*
* @private
*/
const logLevels = {
TRACE: intel.TRACE,
VERBOSE: intel.VERBOSE,
DEBUG: intel.DEBUG,
INFO: intel.INFO,
WARN: intel.WARN,
ERROR: intel.ERROR,
CRITICAL: intel.CRITICAL,
NONE: intel.NONE,
ALL: intel.ALL };
/**
* An abstraction for a logging service which behaves like intel.
*/let
Logger = class Logger {
constructor(source) {
intel.basicConfig({
'format': '[%(date)s] %(name)s.%(levelname)s: %(message)s' });
this[sLogger] = intel.getLogger(source);
this.TRACE = 'TRACE';
this.VERBOSE = 'VERBOSE';
this.DEBUG = 'DEBUG';
this.INFO = 'INFO';
this.WARN = 'WARN';
this.ERROR = 'ERROR';
this.CRITICAL = 'CRITICAL';
this.NONE = 'NONE';
this.ALL = 'ALL';
}
/**
* Log at the 'trace' level.
*/
trace() {return this[sLogger].trace.apply(this[sLogger], arguments);}
/**
* Log at the 'verbose' level.
*/
verbose() {return this[sLogger].verbose.apply(this[sLogger], arguments);}
/**
* Log at the 'debug' level.
*/
debug() {return this[sLogger].debug.apply(this[sLogger], arguments);}
/**
* Log at the 'info' level.
*/
info() {return this[sLogger].info.apply(this[sLogger], arguments);}
/**
* Log at the 'warn' level.
*/
warn() {return this[sLogger].warn.apply(this[sLogger], arguments);}
/**
* Log at the 'error' level.
*/
error() {return this[sLogger].error.apply(this[sLogger], arguments);}
/**
* Log at the 'critical' level.
*/
critical() {return this[sLogger].critical.apply(this[sLogger], arguments);}};
/**
* A factory for `Logger`s. Used within `Module`s, `Resource`s and `Routes`
* @private
*/let
Log = class Log extends Logger {
constructor(ravelInstance) {
super('ravel');
ravelInstance.registerParameter('log level', true);
ravelInstance.set('log level', this.DEBUG); // default log level
ravelInstance.once('post load parameters', function () {
intel.setLevel(logLevels[ravelInstance.get('log level')]);
});
}
setLevel(logLevel) {
if (logLevels[logLevel]) {
intel.setLevel(logLevels[logLevel]);
} else {
throw new ApplicationError.IllegalValue('Specified log level ' + logLevel + ' is not supported.');
}
}
getLogger(source) {
return new Logger(source);
}};
/*!
* Export `Log` for Ravel
*/
module.exports = Log;