// https://blog.csdn.net/crazy_jialin/article/details/121673336 // logger.js const log4js = require('log4js') var { logger_config } = require('../config/config.js') var feishu = require('./feishu') const BASE_PATH = logger_config.BASE_PATH log4js.configure({ appenders: { consoleOut: { type: 'console', layout: { type: 'colored', }, }, default: { type: 'file', filename: BASE_PATH + `/denet_node_server_logger`, pattern: 'yyyy-MM-dd.log', alwaysIncludePattern: true, // 当为 true 时,log 文件名会包含之前设置的 pattern 信息 (默认为 false,但是强烈建议开启) }, error: { type: 'file', filename: BASE_PATH + `/denet_node_server_logger_error`, pattern: 'yyyy-MM-dd.log', alwaysIncludePattern: true, }, transfer: { type: 'file', filename: BASE_PATH + `/denet_node_server_logger_transfer`, pattern: 'yyyy-MM-dd.log', alwaysIncludePattern: true, }, }, categories: { default: { appenders: ['consoleOut', 'default'], level: 'all', }, error: { appenders: ['consoleOut', 'error'], level: 'warn', }, transfer: { appenders: ['consoleOut', 'transfer'], level: 'all', }, }, }) const defaultLogger = log4js.getLogger('default') // 普通级别的logger,输出到控制台和日期分类的文件 const errorLogger = log4js.getLogger('error') // 错误信息的logger,输出到控制台和error.log中 const transferLogger = log4js.getLogger('transfer') // 转账信息的logger,输出到控制台和error.log中 module.exports = { // info及以下级别的日志采用default策略,使用call函数改变this指向,否则会导致logger内部this指向报错 trace() { return defaultLogger.trace.call(defaultLogger, ...arguments) }, debug() { return defaultLogger.debug.call(defaultLogger, ...arguments) }, info() { return defaultLogger.info.call(defaultLogger, ...arguments) }, log() { return defaultLogger.debug.call(defaultLogger, ...arguments) }, // warn及以上的日志采用error策略 warn() { errorLogger.warn.call(errorLogger, ...arguments) }, error() { errorLogger.error.call(errorLogger, ...arguments) feishu.sendMessage(...arguments) }, fatal() { errorLogger.fatal.call(errorLogger, ...arguments) }, mark() { errorLogger.mark.call(errorLogger, ...arguments) }, //转账log tlog() { return transferLogger.debug.call(transferLogger, ...arguments) } } //use // const logger = require('./logger') // logger.trace('trace log') // logger.debug('debug log') // logger.info('info log') // logger.warn('warn log') // logger.error('error log') // logger.fatal('fatal log') // logger.mark('mark log')