forked from LiskArchive/lisk-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlogger.js
More file actions
90 lines (75 loc) · 2.06 KB
/
logger.js
File metadata and controls
90 lines (75 loc) · 2.06 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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
'use strict';
var strftime = require('strftime').utc();
var fs = require('fs');
var util = require('util');
require('colors');
module.exports = function (config) {
config = config || {};
var exports = {};
config.levels = config.levels || {
'trace': 0,
'debug': 1,
'log': 2,
'info': 3,
'warn': 4,
'error': 5,
'fatal': 6
};
config.level_abbr = config.level_abbr || {
'trace': 'trc',
'debug': 'dbg',
'log': 'log',
'info': 'inf',
'warn': 'WRN',
'error': 'ERR',
'fatal': 'FTL'
};
config.filename = config.filename || __dirname + '/logs.log';
config.errorLevel = config.errorLevel || 'log';
var log_file = fs.createWriteStream(config.filename, { flags: 'a' });
exports.setLevel = function (errorLevel) {
config.errorLevel = errorLevel;
};
function snipsecret (data) {
for (var key in data) {
if (key.search(/secret/i) > -1) {
data[key] = 'XXXXXXXXXX';
}
}
return data;
}
Object.keys(config.levels).forEach(function (name) {
function log(caption, data) {
var log = {
'level': name,
'message': caption,
'timestamp': strftime('%F %T', new Date())
};
if (data) {
log.data = snipsecret(data);
}
var data_str = util.isObject(log.data) ? JSON.stringify(log.data) : String(log.data);
var level_str = config.level_abbr[log.level] ? config.level_abbr[log.level] : '???';
if (config.levels[config.errorLevel] <= config.levels[log.level]) {
if (log.data) {
log_file.write(util.format('[%s] %s | %s - %s\n', level_str, log.timestamp, log.message, data_str));
} else {
log_file.write(util.format('[%s] %s | %s\n', level_str, log.timestamp, log.message));
}
}
if (config.echo && config.levels[config.echo] <= config.levels[log.level]) {
try {
if (log.data) {
console.log('['+level_str.bgYellow.black+']', log.timestamp.grey, '|', log.message, '-', data_str);
} else {
console.log('['+level_str.bgYellow.black+']', log.timestamp.grey, '|', log.message);
}
} catch (e){
console.log(e);
}
}
}
exports[name] = log;
});
return exports;
};