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.
79 lines
2.4 KiB
79 lines
2.4 KiB
// 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;
|
|
|