Miao-Yunzai/lib/config/log.js

99 lines
2.5 KiB
JavaScript

import log4js from 'log4js'
import chalk from 'chalk'
import cfg from './config.js'
import fs from 'node:fs'
/**
* 设置日志样式
*/
export default function setLog () {
let file = './logs'
if (!fs.existsSync(file)) {
fs.mkdirSync(file)
}
/** 调整error日志等级 */
// log4js.levels.levels[5].level = Number.MAX_VALUE
// log4js.levels.levels.sort((a, b) => a.level - b.level)
log4js.configure({
appenders: {
console: {
type: 'console',
layout: {
type: 'pattern',
pattern: '%[[MiaoYz][%d{hh:mm:ss.SSS}][%4.4p]%] %m'
}
},
command: {
type: 'dateFile', // 可以是console,dateFile,file,Logstash等
filename: 'logs/command', // 将会按照filename和pattern拼接文件名
pattern: 'yyyy-MM-dd.log',
numBackups: 15,
alwaysIncludePattern: true,
layout: {
type: 'pattern',
pattern: '[%d{hh:mm:ss.SSS}][%4.4p] %m'
}
},
error: {
type: 'file',
filename: 'logs/error.log',
alwaysIncludePattern: true,
layout: {
type: 'pattern',
pattern: '[%d{hh:mm:ss.SSS}][%4.4p] %m'
}
}
},
categories: {
default: { appenders: ['console'], level: cfg.bot.log_level },
command: { appenders: ['console', 'command'], level: 'warn' },
error: { appenders: ['console', 'command', 'error'], level: 'error' }
}
})
const defaultLogger = log4js.getLogger('message')
const commandLogger = log4js.getLogger('command')
const errorLogger = log4js.getLogger('error')
/* eslint-disable no-useless-call */
/** 全局变量 logger */
global.logger = {
trace () {
defaultLogger.trace.call(defaultLogger, ...arguments)
},
debug () {
defaultLogger.debug.call(defaultLogger, ...arguments)
},
info () {
defaultLogger.info.call(defaultLogger, ...arguments)
},
// warn及以上的日志采用error策略
warn () {
commandLogger.warn.call(defaultLogger, ...arguments)
},
error () {
errorLogger.error.call(errorLogger, ...arguments)
},
fatal () {
errorLogger.fatal.call(errorLogger, ...arguments)
},
mark () {
errorLogger.mark.call(commandLogger, ...arguments)
}
}
logColor()
}
function logColor () {
logger.chalk = chalk
logger.red = chalk.red
logger.green = chalk.green
logger.yellow = chalk.yellow
logger.blue = chalk.blue
logger.magenta = chalk.magenta
logger.cyan = chalk.cyan
}