koa2项目中封装log4js日志输出

1.日志输出到控制台

npm i log4js -D

封装log4js文件:

注意:每次都要重新获取log4js.getLogger('debug')级别才能生效

javascript 复制代码
const log4js = require("log4js");

const levels = {
    'trace': log4js.levels.TRACE,
    'debug': log4js.levels.DEBUG,
    'info': log4js.levels.INFO,
    'warn': log4js.levels.WARN,
    'error': log4js.levels.ERROR,
    'fatal': log4js.levels.FATAL
}

log4js.configure({
    appenders:{
        // 输出日志到控制台
        console: { type: 'console' }
    },
    categories:{
        default: { appenders: ['console'], level: 'debug' },
    }
});

/**
 * 日志输出 level 为 debug
 */
exports.debug = (content) => {
//注意:每次都要重新获取log4js.getLogger('debug')级别才能生效
    let logger = log4js.getLogger('debug')
    logger.level = levels.debug
    logger.debug(content);
  }

exports.info = (content) =>{
    let logger = log4js.getLogger('info')
    logger.level = levels.info
    logger.info(content);
}

exports.warn = (content) =>{
    let logger = log4js.getLogger('warn')
    logger.level = levels.warn
    logger.warn(content);
}

exports.error = (content) =>{
    let logger = log4js.getLogger('error')
    logger.level = levels.error
    logger.error(content);
}

app.js文件中引入并使用log4js

javascript 复制代码
// 使用封装的log4j日志
const logger = require("./utils/log4js");

// logger
app.use(async (ctx, next) => {
  const start = new Date()
  await next()
  const ms = new Date() - start
  // console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)
  // 使用log4j输出日志
  logger.info(`log4j输出日志:读取到log4js日志`);
  logger.info(`log4j输出日志:${ctx.method} ${ctx.url} - ${ms}ms`);
})

2.日志输出到日志文件

修改配置为输出到文件即可

javascript 复制代码
const log4js = require("log4js");

const levels = {
    'trace': log4js.levels.TRACE,
    'debug': log4js.levels.DEBUG,
    'info': log4js.levels.INFO,
    'warn': log4js.levels.WARN,
    'error': log4js.levels.ERROR,
    'fatal': log4js.levels.FATAL
}

log4js.configure({
    appenders:{
        // 输出日志到控制台
        console: { type: 'console' },
        // 输出日志到日志文件
        info:{
            type: 'file',
            filename: 'logs/info-logs.log'
        },
        error:{
            type: 'dateFile',
            filename: 'logs/error',
            pattern: 'yyyy-MM-dd.log',
            // 设置文件名称是 filename + pattern
            alwaysIncludePattern: true
        }
    },
    categories:{
        default: { appenders: ['console'], level: 'debug' },
        info: {
            appenders: ["info","console"],
            level: 'info'
        },
        error:{
            appenders: ["error","console"],
            level: 'error'
        }
    }
});

/**
 * 日志输出 level 为 debug
 */
exports.debug = (content) => {
    let logger = log4js.getLogger('debug')
    logger.level = levels.debug
    logger.debug(content);
  }

exports.info = (content) =>{
    let logger = log4js.getLogger('info')
    logger.level = levels.info
    logger.info(content);
}

exports.warn = (content) =>{
    let logger = log4js.getLogger('warn')
    logger.level = levels.warn
    logger.warn(content);
}

exports.error = (content) =>{
    let logger = log4js.getLogger('error')
    logger.level = levels.error
    logger.error(content);
}
相关推荐
Wang's Blog17 小时前
Nodejs-HardCore: 流类型、应用与内置类型实战
nodejs
Wang's Blog1 天前
Nodejs-HardCore: 玩转 EventEmitter 指南
开发语言·nodejs
winfredzhang2 天前
自动化从文本到目录:深度解析 Python 文件结构管理工具
python·ai·nodejs·文件结构
Wang's Blog3 天前
Nodejs-HardCore: Buffer操作、Base64编码与zlib压缩实战
开发语言·nodejs
Wang's Blog3 天前
Nodejs-HardCore: 深入解析DBF文件之二进制文件处理指南
开发语言·nodejs
云霄IT3 天前
[最新可用]centos7安装Node.js版本v21.5.0和pm2管理工具
nodejs
Mr -老鬼4 天前
Electron 与 Tauri 全方位对比指南(2026版)
前端·javascript·rust·electron·nodejs·tauri
Wang's Blog11 天前
Nodejs-HardCore: 操作系统与命令行实用技巧详解
nodejs·os·cli
Irene199113 天前
nodejs:nvm vs fnm 详细对比
nodejs·nvm·fnm
Irene199113 天前
已有 WSL 环境的情况下,在 Windows 本地安装 Node.js(附:VSCode 的三种工作模式)
nodejs·开发环境