-
Notifications
You must be signed in to change notification settings - Fork 0
/
logger.js
65 lines (56 loc) · 1.39 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
const winston = require('winston');
const morgan = require('morgan');
const fs = require('fs');
const logDir = process.env.LOG_DIR || './logs';
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir);
}
winston.level = process.env.LOG_LEVEL || 'info';
const logFormat = winston.format.printf(info => {
if (!info.timestamp) info.timestamp = new Date().toISOString();
return `${info.timestamp} ${info.level}: ${info.message}`;
});
let transports = [
new winston.transports.File({
filename: `${logDir}/ABC.log`,
format: logFormat,
handleExceptions: true,
maxsize: 2 ** 20 * 10,
maxFiles: 10
})
];
if (process.env.NODE_ENV !== 'production')
transports.push(
new winston.transports.Console({
format: logFormat,
handleExceptions: true
})
);
winston.configure({
exitOnError: false,
transports
});
const requestLogFormat = winston.format.printf(info => {
return `${info.message}`;
});
const requestLogger = winston.createLogger({
transports: [
new winston.transports.File({
filename: `${logDir}/ABC-requests.log`,
format: requestLogFormat,
maxsize: 2 ** 20 * 10,
maxFiles: 10
})
]
});
requestLogger.infoStream = {
write: function(message) {
requestLogger.info(message);
}
};
module.exports = {
winston,
morgan: morgan(process.env.NODE_ENV === 'production' ? 'combined' : 'dev', {
stream: requestLogger.infoStream
})
};