log4js
安装
- npm i log4js --save
基本使用
const Koa = require('koa') const log4js = require('log4js') // 引入log4js const app = new Koa() const logger = log4js.getLogger() // 获得日志对象 logger.debug('我是debug级别的日志信息') // 使用日志对象 app.listen(3000, () => { console.log('listen 3000 ok'); })
- 日志等级: trace 0 , debug 1 , info 2 , warn 3 , error 4 , fatal 5
进价使用1
const Koa = require('koa') const log4js = require('log4js') // 引入 log4js const app = new Koa() // 配置 log4js log4js.configure({ appenders: { // 配置一个 default 对象, type代表输出文件类型 filename代表输出文件名 default: { type: 'file', filename: 'default.log' }, // 配置了一个 cheese 对象 type代表输出文件类型 filename代表输出文件名 cheese: { type: 'file', filename: 'cheese.log' }, }, categories: { // 默认 default 分类, 触发 debug 级别日志时会使用 default 对象处理 default: { appenders: ['default'], level: 'debug' }, // 自定义一个 cheese 分类, 触发 error 级别日志时会使用 cheese 和 debug 对象处理 cheese: { appenders: ['default', 'cheese'], level: 'error' } } }) // 获取默认日志对象 const logger = log4js.getLogger() logger.debug('只会使用 categories 对象中的 default 对象的配置处理该日志') // 获取自定义cheese对象日志 const loggerCheese = log4js.getLogger('cheese') loggerCheese.error('使用 categories 对象中的 cheese 对象的配置来处理该日志') app.listen(3000, () => { console.log('listen 3000 ok'); })
- 引入 log4js
- 调用 log4js.configure 函数进行配置,
- appenders 对象中 key 用于配置日志输出的文件类型和文件名,
- categories 对象中的 key 是一个对象,该对象中 appenders 是一个数组,该数组中的每个成员与 appenders 对象中的 key 自动会形成映射关系, level 代表日志级别,触发该级别日志时,会使用 appenders 数组成员映射的 appenders 对象中的 key 处理
- 调用 log4js.getLogger 函数,没有传递参数时会使用 categories 对象中的 default 配置进行处理,如果传递了 cheese 参数,则会使用 categories 对象中的 cheese 配置进行处理
- 调用 log4js.getLogger 函数会返回一个日志对象,该对象触发对应级别日志时会使用 appenders 数组映射的 appenders 对象中的 key 进行日志存储
进价使用2 日志分类
const Koa = require('koa') const log4js = require('log4js') // 引入 log4js const CONFIG = require('./config/config') const app = new Koa() // 配置 log4js log4js.configure({ appenders: { error: { category: 'errorLogger', // logger 名称 type: 'dateFile', // 日志类型 filename: 'logs/error/error', // 日志输出位置 alwaysIncludePattern: true, // 是否有后缀名 pattern: 'yyyy-MM-dd-hh.log', // 后缀 每一小时创建一个新的日志文件 }, response: { category: 'responseLogger', type: 'dateFile', filename: 'logs/response/response', alwaysIncludePattern: true, pattern: 'yyyy-MM-dd-hh.log' } }, categories: { error: { appenders: ['error'], level: 'error' }, response: { appenders: ['response'], level: 'info', }, default: { appenders: ['response', 'error'], level: 'error' } } }) // 获取默认日志对象 // const logger = log4js.getLogger() // logger.error('只会使用 categories 对象中的 default 对象的配置处理该日志') // 获取自定义response对象日志 const loggerCheese = log4js.getLogger('response') loggerCheese.info('使用 categories 对象中的 response 对象的配置来处理该日志') app.listen(3000, () => { console.log('listen 3000 ok'); })
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构