-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlogger.js
More file actions
executable file
·105 lines (98 loc) · 2.42 KB
/
Copy pathlogger.js
File metadata and controls
executable file
·105 lines (98 loc) · 2.42 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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
// 处理日志
const { mkdir, stat, appendFile, rename, writeFile, readdir, rm } = require('fs/promises')
const { join } = require('path')
const config = require('./conf/index')
class Logger {
static Level = {
debug: 'DEBUG',
info: 'INFO',
warn: 'WARN',
error: 'ERROR',
}
constructor(type) {
this.logPath = config.customLogger.path[type || 'web']
}
debug (errMes, errInfo) {
this.writeLog({
level: Logger.Level.debug,
errMes,
errInfo,
})
}
info (errMes, errInfo) {
this.writeLog({
level: Logger.Level.info,
errMes,
errInfo,
})
}
warn (errMes, errInfo) {
this.writeLog({
level: Logger.Level.warn,
errMes,
errInfo,
})
}
error (errMes, errInfo) {
this.writeLog({
level: Logger.Level.error,
errMes,
errInfo,
})
}
async writeLog (data) {
const maxStayDay = 10
const { level, errMes, errInfo } = data
const path = join(__dirname, this.logPath)
const tempFileName = `${path}logs.log`
const content = `${new Date().formatTime('yyyy-MM-dd hh:mm:ss')}; ${level}: ${errMes} ${errInfo || ''}`
try {
await mkdir(path, { recursive: true })
await stat(tempFileName).then(async todayLogFile => {
const fileTime = new Date(todayLogFile.birthtimeMs)
const timeFormat = fileTime.formatTime('yyyy-MM-dd')
if (new Date().toDateString() === fileTime.toDateString()) {
await appendFile(tempFileName, `\r\n${content}`)
} else {
await readdir(path).then(async dirFile => {
if (dirFile.length >= maxStayDay) {
await rm(path + dirFile[dirFile.length -1])
}
await rename(tempFileName, `${tempFileName}_${timeFormat}`)
await writeFile(tempFileName, content)
})
}
}).catch(async (err) => {
if (err.errno === -2) {
await writeFile(tempFileName, content)
}
})
} catch (err) {
// console.log(err)
throw new Error(err)
}
}
}
// web日志
class WebLogger extends Logger {
constructor () {
super('web')
}
}
// app启动运行日志
class AppLogger extends Logger {
constructor () {
super('app')
}
}
// DB启动运行日志
class DBLogger extends Logger {
constructor () {
super('db')
}
}
module.exports = {
WebLogger: new WebLogger(),
AppLogger: new AppLogger(),
DBLogger: new DBLogger()
}