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 相关文章推荐
用jquery实现学校的校历(asp.net+jquery ui 1.72)
Jan 01 Javascript
javascript实现10个球随机运动、碰撞实例详解
Jul 08 Javascript
jQuery网页版打砖块小游戏源码分享
Aug 20 Javascript
jQuery子元素过滤选择器用法示例
Sep 09 Javascript
JavaScript贪吃蛇小组件实例代码
Aug 20 Javascript
简单谈谈vue的过渡动画(推荐)
Oct 11 Javascript
bootstrap paginator分页插件的两种使用方式实例详解
Nov 14 Javascript
react以create-react-app为基础创建项目
Mar 14 Javascript
微信小程序实现刷脸登录
May 25 Javascript
详解vantUI框架在vue项目中的应用踩坑
Dec 06 Javascript
详解mpvue中小程序自定义导航组件开发指南
Feb 11 Javascript
详解Js模块化的作用原理和方案
Apr 29 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
PHP4和PHP5共存于一系统
2006/11/17 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
收集的10个免费的jQuery相册
2011/02/26 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
js特殊字符过滤的示例代码
2014/03/05 Javascript
Bootstrap3制作自己的导航栏
2016/05/12 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
jQuery使用EasyUi实现三级联动下拉框效果
2017/03/08 Javascript
self.attachevent is not a function的解决方法
2017/04/04 Javascript
基于twbsPagination.js分页插件使用心得(分享)
2017/10/21 Javascript
Bootstrap Table 双击、单击行获取该行及全表内容
2018/08/31 Javascript
javacript replace 正则取字符串中的值并替换【推荐】
2018/09/13 Javascript
TypeScript基础入门教程之三重斜线指令详解
2018/10/22 Javascript
浅谈ECMAScript 中的Array类型
2019/06/10 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
python实现查询IP地址所在地
2015/03/29 Python
Python中List.index()方法的使用教程
2015/05/20 Python
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
Python os.access()用法实例
2019/02/18 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
2020/06/01 Python
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
垃圾回收的优点和原理
2014/05/16 面试题
致跳远运动员广播稿
2014/02/11 职场文书
个人函授自我鉴定
2014/03/25 职场文书
李敖北大演讲稿
2014/05/24 职场文书
婚礼新人答谢词
2015/01/04 职场文书
一年级数学下册复习计划
2015/01/17 职场文书
水电施工员岗位职责
2015/04/11 职场文书
三好学生竞选稿
2015/11/21 职场文书
TensorFlow中tf.batch_matmul()的用法
2021/06/02 Python
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android