本文详解Node.js中log4js v2.3.12版本的配置方法,重点介绍如何结合express框架实现日志管理。通过独立配置文件,演示如何设置控制台输出与按天分片的文件日志,区分请求、错误及其他日志级别。新版配置中category与appenders分离,通过categories指定日志等级与输出方式,提供完整代码示例供参考。
Node.js log4js配置概述
前言
在Node.js开发中,express框架本身并未内置日志记录模块。为了完善日志功能,开发者可以选择使用log4js库来实现专业的日志记录需求。
对于熟悉Java中log4j的开发者而言,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配置的全部内容。希望本文的配置示例和说明能对您的项目开发或学习有所帮助。如有任何疑问,欢迎留言交流。感谢支持。