-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlogger.js
More file actions
65 lines (56 loc) · 2.07 KB
/
logger.js
File metadata and controls
65 lines (56 loc) · 2.07 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
/* global module */
let stack = require("callsite");
let winston = require("winston");
let path = require("path");
let formatter = function(options) {
return options.level.toUpperCase() + " " +
(options.message ? options.message : "") +
(options.meta && Object.keys(options.meta).length ? "\n\t" + JSON.stringify(options.meta) : "");
};
module.exports = function(config) {
if(!config || !config.transports || !config.levels || !config.level) {
throw new Error("Invalid configuration.");
}
let logTransports = config.transports;
let logOptions = {
transports: [],
levels: config.levels,
level: config.level
};
logTransports.forEach(function(t) {
switch (t.name) {
case "console":
logOptions.transports.push(new winston.transports.Console(t.options));
break;
case "syslog":
t.options.timestamp = function() {
return Date.now();
};
t.options.formatter = formatter;
require("winston-syslog").Syslog;
logOptions.transports.push(new winston.transports.Syslog(t.options));
break;
default:
throw new Error("Unsupported transport.");
}
});
let logger = new winston.Logger(logOptions);
if(config.colors) {
winston.addColors(config.colors);
}
var oldInfo = logger.info;
logger.info = function(...args) {
var site = stack()[1];
args[0] = "[" + (site.getFunctionName() || "anonymous") + ":" + path.basename(site.getFileName()) +
":" + site.getLineNumber() + "] " + args[0];
return oldInfo.apply(this, args);
};
var oldDebug = logger.debug;
logger.debug = function(...args) {
var site = stack()[1];
args[0] = "[" + (site.getFunctionName() || "anonymous") + ":" + path.basename(site.getFileName()) +
":" + site.getLineNumber() + "] " + args[0];
return oldDebug.apply(this, args);
};
return logger;
};