Repository navigation
Expand file tree
/
Copy pathlogger.js
More file actions
64 lines (58 loc) · 1.65 KB
/
Copy pathlogger.js
File metadata and controls
64 lines (58 loc) · 1.65 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
const {createLogger, format, transports} = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');
const filterOnly = (level) => format(
(info) => info.level === level ? info : false)();
const logger = createLogger({
// global format
format: format.combine(
format.timestamp({format: 'YYYY-MM-DD HH:mm:ss'}),
format.printf(
info => `[${info.timestamp}] ${info.level.toUpperCase()}: ${info.message}`)
),
transports: [
// 1. info
new DailyRotateFile({
filename: 'logs/info-%DATE%.log',
datePattern: 'YYYY-MM-DD',
level: 'info',
format: filterOnly('info')
}),
// 2. debug, info, warn, error
new DailyRotateFile({
filename: 'logs/debug-%DATE%.log',
datePattern: 'YYYY-MM-DD',
level: 'debug'
}),
// 3. errors
new DailyRotateFile({
filename: 'logs/error-%DATE%.log',
datePattern: 'YYYY-MM-DD',
level: 'error',
format: filterOnly('error')
}),
// 4. console output
new transports.Console({
level: 'debug', // output all levels
format: format.combine(
format.colorize(),
format.printf(info => `[${info.timestamp}] ${info.level}: ${info.message}`)
)
})
],
exceptionHandlers: [
new DailyRotateFile({
filename: 'logs/crash-%DATE%.log',
datePattern: 'YYYY-MM-DD'
}),
// Show crashes in the terminal too, not only in the crash log
new transports.Console()
],
rejectionHandlers: [
new DailyRotateFile({
filename: 'logs/crash-%DATE%.log',
datePattern: 'YYYY-MM-DD'
}),
new transports.Console()
]
});
module.exports = logger;