Node.js log4js日志管理详解


Posted in Javascript onJuly 31, 2018

前言

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

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

Node.js 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的每一项里面设置。

总结

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

Javascript 相关文章推荐
JavaScript面向对象之私有静态变量实例分析
Jan 14 Javascript
使用JSON作为函数的参数的优缺点
Oct 27 Javascript
jQuery webuploader分片上传大文件
Nov 07 Javascript
深入学习jQuery中的data()
Dec 22 Javascript
express框架实现基于Websocket建立的简易聊天室
Aug 10 Javascript
Express下采用bcryptjs进行密码加密的方法
Feb 07 Javascript
从零开始搭建webpack+react开发环境的详细步骤
May 18 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
Sep 03 Javascript
vue-cli 3.x 修改dist路径的方法
Sep 19 Javascript
使用JS获取页面上的所有标签
Oct 18 Javascript
Vue路由前后端设计总结
Aug 06 Javascript
详解vue-router 动态路由下子页面多页共活的解决方案
Dec 22 Javascript
jQuery 实现倒计时天,时,分,秒功能
Jul 31 #jQuery
JS实现移动端触屏拖拽功能
Jul 31 #Javascript
JavaScript new对象的四个过程实例浅析
Jul 31 #Javascript
Vue 路由 过渡动效 数据获取方法
Jul 31 #Javascript
JS实现判断图片是否加载完成的方法分析
Jul 31 #Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
Jul 31 #Javascript
vue实现word,pdf文件的导出功能
Jul 31 #Javascript
You might like
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
深入PHP5中的魔术方法详解
2013/06/17 PHP
PHP 获取远程文件大小的3种解决方法
2013/07/11 PHP
浅谈php提交form表单
2015/07/01 PHP
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
javascript实现控制div颜色
2015/07/07 Javascript
javascript实现树形菜单的方法
2015/07/17 Javascript
javascript实现的闭包简单实例
2015/07/17 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
2016/03/22 Javascript
JS修改地址栏参数实例代码
2016/06/14 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
vue渲染时闪烁{{}}的问题及解决方法
2018/03/28 Javascript
在vue中使用vuex,修改state的值示例
2019/11/08 Javascript
[02:57]2014DOTA2国际邀请赛-观众采访
2014/07/19 DOTA
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
用python实现的去除win下文本文件头部BOM的代码
2013/02/10 Python
Python实现方便使用的级联进度信息实例
2015/05/05 Python
bpython 功能强大的Python shell
2016/02/16 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
2017/09/11 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
2019/06/25 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
竞选演讲稿范文
2013/12/28 职场文书
村级四风对照检查材料
2014/08/24 职场文书
答辩状格式范本
2015/05/22 职场文书
MongoDB balancer的使用详解
2021/04/30 MongoDB
利用Python脚本写端口扫描器socket,python-nmap
2022/07/23 Python