Telegram Web, preconfigured for usage in I2P.
http://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.4 KiB
80 lines
2.4 KiB
11 years ago
|
// This is the **logger** module for *Karma*. It uses
|
||
|
// [log4js](https://github.com/nomiddlename/log4js-node) to handle and
|
||
|
// configure all logging that happens inside of *Karma*.
|
||
|
|
||
|
|
||
|
// ### Helpers and Setup
|
||
|
|
||
|
var log4js = require('log4js');
|
||
|
var helper = require('./helper');
|
||
|
var constant = require('./constants');
|
||
|
|
||
|
// Special Wrapper for Socket.io :(
|
||
|
var LogWrapper = function(name, level) {
|
||
|
this.logger = log4js.getLogger(name);
|
||
|
this.logger.setLevel(level);
|
||
|
};
|
||
|
['error', 'warn', 'info', 'debug'].forEach(function(level) {
|
||
|
LogWrapper.prototype[level] = function() {
|
||
|
this.logger[level].apply(this.logger, arguments);
|
||
|
};
|
||
|
});
|
||
|
|
||
|
// #### Public Functions
|
||
|
|
||
|
// Setup the logger by passing in the configuration options. It needs
|
||
|
// three argumentes:
|
||
|
//
|
||
|
// setup(logLevel, colors, appenders)
|
||
|
//
|
||
|
// * `logLevel`: *String* Defines the global log level.
|
||
|
// * `colors`: *Boolean* Use colors in the stdout or not.
|
||
|
// * `appenders`: *Array* This will be passed as appenders to log4js
|
||
|
// to allow for fine grained configuration of log4js. For more information
|
||
|
// see https://github.com/nomiddlename/log4js-node.
|
||
|
var setup = function(level, colors, appenders) {
|
||
|
// Turn color on/off on the console appenders with pattern layout
|
||
|
var pattern = colors ? constant.COLOR_PATTERN : constant.NO_COLOR_PATTERN;
|
||
|
|
||
|
// If there are no appenders use the default one
|
||
|
appenders = helper.isDefined(appenders) ? appenders : [constant.CONSOLE_APPENDER];
|
||
|
|
||
|
appenders = appenders.map(function(appender) {
|
||
|
if(appender.type === 'console') {
|
||
|
if (helper.isDefined(appender.layout) && appender.layout.type === 'pattern') {
|
||
|
appender.layout.pattern = pattern;
|
||
|
}
|
||
|
}
|
||
|
return appender;
|
||
|
});
|
||
|
|
||
|
// Pass the values to log4js
|
||
|
log4js.setGlobalLogLevel(level);
|
||
|
log4js.configure({
|
||
|
appenders: appenders
|
||
|
});
|
||
|
};
|
||
|
|
||
|
// Create a new logger. There are two optional arguments
|
||
|
// * `name`, which defaults to `karma` and
|
||
|
// If the `name = 'socket.io'` this will create a special wrapper
|
||
|
// to be used as a logger for socket.io.
|
||
|
// * `level`, which defaults to the global level.
|
||
|
var create = function(name, level) {
|
||
|
if (name === 'socket.io') {
|
||
|
return new LogWrapper('socket.io', level);
|
||
|
} else {
|
||
|
var logger = log4js.getLogger(name || 'karma');
|
||
|
if (helper.isDefined(level)) {
|
||
|
logger.setLevel(level);
|
||
|
}
|
||
|
return logger;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
// #### Publish
|
||
|
|
||
|
exports.create = create;
|
||
|
exports.setup = setup;
|