Node.js log4js日志管理详解

 更新时间:2018年07月31日 11:12:29   作者:♚帅  
日志对任何的应用来说都是至关重要的,下面这篇文章主要给大家介绍了关于Node.js log4js日志管理的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧

前言

在Nodejs中使用express框架并没有自带的日志模块,我们可以选择log4js来完成日志记录的功能。

如果用过JAVA中log4j的同学,肯定对日志并不陌生,学习log4js会更得心应手的。

项目要用log4js记录日志,网上找的教程都是很久以前的,新版本log4js跟旧版本有一些不同,看文档结合旧版本配置了能用的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]'//自定义输出格式
 }))
}

使用:

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')

新版本的 category不再包含在appenders里面,而是放在与appenders同级的categories里面,appenders要有名字,用来指定categories每一项的appender,日志等级改为在categories的每一项里面设置。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Windows安装Node.js报错:2503、2502的解决方法

    Windows安装Node.js报错:2503、2502的解决方法

    这篇文章主要给大家介绍了关于在Windows系统下安装Node.js报错:2503、2502的解决方法,文中将解决的方法一步步介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-10-10
  • 详解node单线程实现高并发原理与node异步I/O

    详解node单线程实现高并发原理与node异步I/O

    本篇文章主要介绍了node单线程实现高并发原理与node异步I/O ,具有一定的参考价值,有兴趣的可以了解一下
    2017-09-09
  • node基于async/await对mysql进行封装

    node基于async/await对mysql进行封装

    这篇文章主要介绍了node基于async/await对mysql进行封装,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • Node.js中路径处理模块path详解

    Node.js中路径处理模块path详解

    相信大家都知道在nodejs中,path是个使用频率很高,但却让人又爱又恨的模块。因为部分文档说的不够清晰,还有部分因为接口的平台差异性。本文就给大家详细介绍下关于Node.js中的路径处理模块path,希望能对大家学习或者使用模块path有所帮助,下面来一起看看吧。
    2016-11-11
  • 在Mac下彻底卸载node和npm的方法

    在Mac下彻底卸载node和npm的方法

    今天小编就为大家分享一篇在Mac下彻底卸载node和npm的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 详解node.js平台下Express的session与cookie模块包的配置

    详解node.js平台下Express的session与cookie模块包的配置

    本篇文章主要介绍了详解node.js平台下Express的session与cookie模块包的配置,具有一定的参考价值,有兴趣的可以了解一下。
    2017-04-04
  • node.js中的fs.symlink方法使用说明

    node.js中的fs.symlink方法使用说明

    这篇文章主要介绍了node.js中的fs.symlink方法使用说明,本文介绍了fs.symlink的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • Mongoose经常返回e11000 error的原因分析

    Mongoose经常返回e11000 error的原因分析

    这篇文章主要给大家分析了Mongoose经常返回e11000 error的原因,文中介绍的非常详细,对大家具有一定的参考价值,需要的朋友可以们下面来一起看看吧。
    2017-03-03
  • Node.js node-schedule定时任务隔多少分钟执行一次的方法

    Node.js node-schedule定时任务隔多少分钟执行一次的方法

    这篇文章主要介绍了Node.js node-schedule定时任务隔多少分钟执行一次的方法,本文给出了每隔 15 分钟、 30 分钟执行一次任务的编码实例,需要的朋友可以参考下
    2015-02-02
  • npm 工具库 yenv使用简介

    npm 工具库 yenv使用简介

    这篇文章主要为大家介绍了npm 工具库 yenv使用简介,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05

最新评论