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);
}
相关推荐
biaov18 小时前
汉化 Claude Code 的命令提示
nodejs·cli·汉化·claude code
村中少年6 天前
本地模型工具ollama配置使用openclaw指南
llm·nodejs·虚拟机·qwen·ollama·openclaw
儒雅的烤地瓜8 天前
小程序 | Vue小程序开发框架:MPvue与UniApp深度解析
前端·vue.js·uni-app·nodejs·cli·mpvue
喜欢踢足球的老罗25 天前
PM2 进程持久化实战:深度解析 save 与 startup 的协同机制
nodejs·pm2
John Song1 个月前
npx 与 npm 的区别
npm·nodejs
belldeep2 个月前
nodejs v18.20 如何使用 express markdown-it 和 mermaid.min.js 10.9
nodejs·express·markdown·mermaid
ayuday2 个月前
Svelte - 现代高性能Web开发框架!轻量级‌、响应式、编译时优化‌特点
nodejs·svelte
Wang's Blog2 个月前
Nodejs-HardCore: 流类型、应用与内置类型实战
nodejs
Wang's Blog2 个月前
Nodejs-HardCore: 玩转 EventEmitter 指南
开发语言·nodejs
winfredzhang2 个月前
自动化从文本到目录:深度解析 Python 文件结构管理工具
python·ai·nodejs·文件结构