Improve logging
This commit is contained in:
parent
530a58f703
commit
6918729c45
1 changed files with 21 additions and 46 deletions
|
@ -4,11 +4,22 @@ import { NextApiRequest } from 'next'
|
||||||
import { IncomingMessage } from 'http'
|
import { IncomingMessage } from 'http'
|
||||||
colors.enable()
|
colors.enable()
|
||||||
|
|
||||||
export type LoggingTypes = 'system' | 'info.green' | 'info.cyan' | 'debug' | 'post' | 'warn' | 'error' | [string, keyof Color]
|
const loggingTemplates: { [key: string]: LoggingType } = {
|
||||||
|
'system': ['SYSTEM', 'green'],
|
||||||
|
'info.green': ['INFO', 'green'],
|
||||||
|
'info.cyan': ['INFO', 'cyan'],
|
||||||
|
'debug': ['Debug', 'grey'],
|
||||||
|
'post': ['Post', 'white'],
|
||||||
|
'warn': ['WARN', 'yellow'],
|
||||||
|
'error': ['ERROR', 'red']
|
||||||
|
}
|
||||||
|
|
||||||
|
type LoggingType = [string, keyof Color]
|
||||||
|
export type Logging = keyof typeof loggingTemplates | LoggingType
|
||||||
|
|
||||||
let started: boolean = false
|
let started: boolean = false
|
||||||
|
|
||||||
export async function logStartup() {
|
async function logStartup() {
|
||||||
await fs.promises.stat('log').catch(async () => {
|
await fs.promises.stat('log').catch(async () => {
|
||||||
await fs.promises.mkdir('log')
|
await fs.promises.mkdir('log')
|
||||||
await logging(`Created 'log' Folder.`, ['info.cyan', 'system'])
|
await logging(`Created 'log' Folder.`, ['info.cyan', 'system'])
|
||||||
|
@ -16,52 +27,14 @@ export async function logStartup() {
|
||||||
started = true
|
started = true
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function logging(message: string, types: LoggingTypes[], req?: NextApiRequest | IncomingMessage) {
|
async function logging(message: string, types: Logging[], req?: NextApiRequest | IncomingMessage) {
|
||||||
if (!started)
|
if (!started)
|
||||||
await logStartup()
|
await logStartup()
|
||||||
let messages = { console: message, file: message }
|
const messages = { console: message, file: message }
|
||||||
types.slice().reverse().forEach(async (type) => {
|
types.slice().reverse().forEach(async (type) => {
|
||||||
switch (type) {
|
const [name, color] = typeof type === 'object' ? type : loggingTemplates[type]
|
||||||
case 'system':
|
messages.console = `[${name}] `[color] + messages.console
|
||||||
messages.console = '[SYSTEM] '.green + messages.console
|
messages.file = `[${name}] ` + messages.file
|
||||||
messages.file = '[SYSTEM] ' + messages.file
|
|
||||||
break
|
|
||||||
|
|
||||||
case 'info.green':
|
|
||||||
messages.console = '[INFO] '.green + messages.console
|
|
||||||
messages.file = '[INFO] ' + messages.file
|
|
||||||
break
|
|
||||||
|
|
||||||
case 'info.cyan':
|
|
||||||
messages.console = '[INFO] '.cyan + messages.console
|
|
||||||
messages.file = '[INFO] ' + messages.file
|
|
||||||
break
|
|
||||||
|
|
||||||
case 'debug':
|
|
||||||
messages.console = '[Debug] '.grey + messages.console
|
|
||||||
messages.file = '[Debug] ' + messages.file
|
|
||||||
break
|
|
||||||
|
|
||||||
case 'post':
|
|
||||||
messages.console = '[POST] ' + messages.console
|
|
||||||
messages.file = '[POST] ' + messages.file
|
|
||||||
break
|
|
||||||
|
|
||||||
case 'warn':
|
|
||||||
messages.console = '[WARN] '.yellow + messages.console
|
|
||||||
messages.file = '[WARN] ' + messages.file
|
|
||||||
break
|
|
||||||
|
|
||||||
case 'error':
|
|
||||||
messages.console = '[ERROR] '.red + messages.console
|
|
||||||
messages.file = '[ERROR] ' + messages.file
|
|
||||||
break
|
|
||||||
|
|
||||||
default:
|
|
||||||
messages.console = `[${type[0]}] `[type[1]] + messages.console
|
|
||||||
messages.file = `[${type[0]}] ` + messages.file
|
|
||||||
break
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
messages.console = `[${new Date().toString().slice(0, 33)}] ` + messages.console
|
messages.console = `[${new Date().toString().slice(0, 33)}] ` + messages.console
|
||||||
messages.file = `[${new Date().toString().slice(0, 33)}] ` + messages.file
|
messages.file = `[${new Date().toString().slice(0, 33)}] ` + messages.file
|
||||||
|
@ -73,4 +46,6 @@ export async function logging(message: string, types: LoggingTypes[], req?: Next
|
||||||
}
|
}
|
||||||
await fs.promises.appendFile('log/log.txt', messages.file + '\n')
|
await fs.promises.appendFile('log/log.txt', messages.file + '\n')
|
||||||
console.log(messages.console)
|
console.log(messages.console)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default logging
|
Loading…
Add table
Add a link
Reference in a new issue