log.js
1.54 KB
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
'use strict';
module.exports = {
compareLevels: compareLevels,
log: log,
runTransport: runTransport,
runTransports: runTransports,
};
function log(electronLog, options) {
var transports = electronLog.transports;
var message = {
data: Array.prototype.slice.call(arguments, 2),
date: new Date(),
level: options.level,
scope: options.scope ? options.scope.toJSON() : null,
variables: electronLog.variables,
};
runTransports(transports, message, electronLog);
}
function runTransports(transports, message, electronLog) {
for (var i in transports) {
if (Object.prototype.hasOwnProperty.call(transports, i)) {
runTransport(transports[i], message, electronLog);
}
}
}
function runTransport(transport, message, electronLog) {
if (typeof transport !== 'function' || transport.level === false) {
return;
}
if (!compareLevels(electronLog.levels, transport.level, message.level)) {
return;
}
message = runHooks(electronLog.hooks, transport, message);
if (message) {
transport(message);
}
}
function compareLevels(levels, passLevel, checkLevel) {
var pass = levels.indexOf(passLevel);
var check = levels.indexOf(checkLevel);
if (check === -1 || pass === -1) {
return true;
}
return check <= pass;
}
function runHooks(hooks, transport, message) {
if (!hooks || !hooks.length) {
return message;
}
// eslint-disable-next-line no-plusplus
for (var i = 0; i < hooks.length; i++) {
message = hooks[i](message, transport);
if (!message) break;
}
return message;
}