-
Notifications
You must be signed in to change notification settings - Fork 0
/
logger.js
75 lines (63 loc) · 2.16 KB
/
logger.js
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
if (typeof (window.app) === 'undefined' || window.app === null) {
throw new Error("global object 'app' is required");
}
window.app.logger = (function (app) {
var appenders = [],
isLogLevelEnabled = function (logLevel) {
var isEnabled = false;
if (app.config && app.config.logger) {
isEnabled = app.config.logger['is' + logLevel + 'Enabled'] === true;
}
return isEnabled;
},
debug = function (message, category) {
log(category, "Debug", message);
},
info = function (message, category) {
log(category, "Info", message);
},
warn = function (message, category) {
log(category, "Warn", message);
},
error = function (message, category) {
log(category, "Error", message);
},
log = function (category, logLevel, message) {
if (typeof (message) === 'undefined') {
throw new Error("a message must be provided");
}
if (typeof (category) === 'undefined') {
category = "";
}
if (isLogLevelEnabled(logLevel)) {
for (var i = 0; i < appenders.length; i++) {
try {
appenders[i].log(category, logLevel, message);
} catch (e) {
// one failing appender must not cause skipping of other appenders
try {
if (window.console && window.console.log) {
window.console.log(e);
}
} catch (consoleException) {
}
}
}
}
},
addAppender = function (appender) {
/// <summary>Adds the specified appender to the logger. All log messages will be forwarded to the appender.</summary>
/// <param name="appender">Required: The appender to which the log messages will be forwarded. Must implement a 'log' function.</param>
if (typeof (appender) === 'undefined') {
throw new Error("Nullargument: appender");
}
appenders.push(appender);
};
return {
debug: debug,
info: info,
warn: warn,
error: error,
addAppender: addAppender
};
})(window.app);