78 lines
1.9 KiB
JavaScript
78 lines
1.9 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
const dbug = require('dbug')('intel');
|
|
|
|
const Logger = require('./logger');
|
|
const Handler = require('./handlers/handler');
|
|
const handlers = require('./handlers');
|
|
const Formatter = require('./formatter');
|
|
|
|
const root = new Logger();
|
|
|
|
root.propagate = false;
|
|
root.setLevel(Logger.TRACE);
|
|
var oldHandle = root.handle;
|
|
root.handle = function handle() {
|
|
if (this._handlers.length === 0) {
|
|
root.basicConfig();
|
|
}
|
|
return oldHandle.apply(this, arguments);
|
|
};
|
|
|
|
const DEFAULT_FORMAT = '%(name)s.%(levelname)s: %(message)s';
|
|
root.basicConfig = function basicConfig(options) {
|
|
if (root._handlers.length) {
|
|
return;
|
|
}
|
|
dbug('basicConfig', options);
|
|
|
|
// available options:
|
|
// level, format, filename, stream
|
|
options = options || {};
|
|
|
|
var hdlr;
|
|
if (options.file) {
|
|
hdlr = new handlers.File({ file: options.file });
|
|
} else if (options.stream) {
|
|
hdlr = new handlers.Stream({ stream: options.stream });
|
|
} else if (options.null) {
|
|
hdlr = new handlers.Null();
|
|
} else {
|
|
hdlr = new handlers.Console();
|
|
}
|
|
hdlr.setFormatter(new Formatter(options.format || DEFAULT_FORMAT));
|
|
root.addHandler(hdlr);
|
|
|
|
if (options.level) {
|
|
root.setLevel(options.level);
|
|
}
|
|
root.handle = oldHandle;
|
|
};
|
|
|
|
root.Logger = Logger;
|
|
root.Handler = Handler;
|
|
root.handlers = handlers;
|
|
root.Formatter = Formatter;
|
|
root.Filter = require('./filter');
|
|
|
|
root.getLogger = function getLogger(name) {
|
|
return new Logger(name);
|
|
};
|
|
|
|
// lazy load it, since console depends on this module
|
|
Object.defineProperty(root, 'config', {
|
|
get: function() {
|
|
return require('./config');
|
|
}
|
|
});
|
|
Object.defineProperty(root, 'console', {
|
|
get: function() {
|
|
return require('./console');
|
|
}
|
|
});
|
|
|
|
|
|
module.exports = root;
|