Node.js log4js v2.3.12 配置指南:按天分片与多级别日志输出

作者:岩茶

时间:2026-10-22

浏览:408

本文详解Node.js中log4js v2.3.12版本的配置方法,重点介绍如何结合express框架实现日志管理。通过独立配置文件,演示如何设置控制台输出与按天分片的文件日志,区分请求、错误及其他日志级别。新版配置中category与appenders分离,通过categories指定日志等级与输出方式,提供完整代码示例供参考。

文章目录

Node.js log4js配置概述

前言

在Node.js开发中,express框架本身并未内置日志记录模块。为了完善日志功能,开发者可以选择使用log4js库来实现专业的日志记录需求。

对于熟悉Java中log4j的开发者而言,log4js的配置逻辑与使用方式较为相似,学习曲线相对平缓,能够更快速地上手。

Node.js log4js配置概述

log4js v2.3.12 配置策略

在实际项目中,网上现有的教程多基于旧版本,新版log4js在配置结构上有所变化。本文基于当前log4js版本2.3.12,演示如何配置按天分片的日志策略,并同时输出到控制台和文件,供读者参考。

建议将log4js的配置逻辑单独封装到一个配置文件中,其他业务模块只需引用该配置文件即可使用日志功能,保持代码整洁。

配置文件命名为log-config.js。

日志配置文件详解


const log4js = require('log4js')
 
log4js.configure({
 replaceConsole: true,
 appenders: {
  stdout: {//控制台输出
   type: 'stdout'
  },
  req: {//请求日志
   type: 'dateFile',
   filename: 'logs/reqlog/',
   pattern: 'req-yyyy-MM-dd.log',
   alwaysIncludePattern: true
  },
  err: {//错误日志
   type: 'dateFile',
   filename: 'logs/errlog/',
   pattern: 'err-yyyy-MM-dd.log',
   alwaysIncludePattern: true
  },
  oth: {//其他日志
   type: 'dateFile',
   filename: 'logs/othlog/',
   pattern: 'oth-yyyy-MM-dd.log',
   alwaysIncludePattern: true
  }
 },
 categories: {
  default: { appenders: ['stdout', 'req'], level: 'debug' },//appenders:采用的appender,取appenders项,level:设置级别
  err: { appenders: ['stdout', 'err'], level: 'error' },
  oth: { appenders: ['stdout', 'oth'], level: 'info' }
 }
})
 
 
exports.getLogger = function (name) {//name取categories项
 return log4js.getLogger(name || 'default')
}
 
exports.useLogger = function (app, logger) {//用来与express结合
 app.use(log4js.connectLogger(logger || log4js.getLogger('default'), {
  format: '[:remote-addr :method :url :status :response-timems][:referrer HTTP/:http-version :user-agent]'//自定义输出格式
 }))
}

在业务代码中引入该配置文件即可使用。

express集成与日志使用


const log4js= require('./log-config')
const logger = log4js.getLogger()//根据需要获取logger
const errlogger = log4js.getLogger('err')
const othlogger = log4js.getLogger('oth')
 
//结合express使用,记录请求日志
app = express()
log4js.useLogger(app,logger)//这样会自动记录每次请求信息,放在其他use上面
//手动记录,可以代替console.log
logger.info('test info 1')
errlogger.err('test error 1')
othlogger.info('test info 2')

新版log4js的配置结构发生了重要变化:category不再嵌套在appenders内部,而是独立放置在与appenders同级的categories对象中。appenders需要定义名称,以便在categories中通过该名称指定对应的输出源。此外,日志等级的设置也移至categories的各项配置内部进行定义。

总结

以上就是Node.js中log4js配置的全部内容。希望本文的配置示例和说明能对您的项目开发或学习有所帮助。如有任何疑问,欢迎留言交流。感谢支持。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章