1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// 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')
// #### Public Functions
// Setup the logger by passing in the configuration options. It needs
// three arguments:
//
// 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
})
}
// Setup the logger by passing in the config object. The function sets the
// `colors` and `logLevel` if they are defined. It takes two arguments:
//
// setupFromConfig(config, appenders)
//
// * `config`: *Object* The configuration object.
// * `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 setupFromConfig = function (config, appenders) {
var useColors = true
var logLevel = constant.LOG_INFO
if (helper.isDefined(config.colors)) {
useColors = config.colors
}
if (helper.isDefined(config.logLevel)) {
logLevel = config.logLevel
}
setup(logLevel, useColors, 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) {
var logger = log4js.getLogger(name || 'karma')
if (helper.isDefined(level)) {
logger.setLevel(level)
}
return logger
}
// #### Publish
exports.create = create
exports.setup = setup
exports.setupFromConfig = setupFromConfig