winston.js
1.15 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
const {transports, createLogger, format} = require('winston')
require('winston-daily-rotate-file')
module.exports = (loggers) => {
const tps = loggers.map(log => {
switch (log.type) {
case 'console':
return new transports.Console(Object.assign({
level: 'info'
}, log))
case 'file':
return new transports.File(Object.assign({
level: 'info',
zippedArchive: true,
maxsize: 209715200, // 200m
maxFiles: 7,
}, log))
case 'dailyfile':
return new transports.DailyRotateFile(Object.assign({
level: 'info',
zippedArchive: true,
maxSize: '200m',
maxFiles: '7d',
datePattern: 'YYYY-MM-DD',
dirname: './logs'
}, log))
}
})
const logger = createLogger({
level: 'info',
format: format.combine(
format.timestamp({
format: () => {
return new Date().toLocaleString()
}
}),
format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)
),
transports: tps
})
logger.mount = (o) => {
o['logger'] = logger
}
return logger
}