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之四(优雅的迭代)
Jun 20 Javascript
jquery easyui中treegrid用法的简单实例
Feb 18 Javascript
上传文件返回的json数据会被提示下载问题解决方案
Dec 03 Javascript
JavaScript检测鼠标移动方向的方法
May 22 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
Jan 04 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
Jul 05 Javascript
关于JavaScript的单双引号嵌套问题
Aug 20 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
Sep 04 Javascript
Three.js如何实现雾化效果示例代码
Sep 27 Javascript
JS运动特效之完美运动框架实例分析
Jan 24 Javascript
jquery+css实现Tab栏切换的代码实例
May 14 jQuery
vue实现移动端拖动排序
Aug 21 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版(4)
2006/10/09 PHP
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
jquery ready(fn)事件使用介绍
2013/08/21 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
javascript实现dom元素可拖动
2016/03/21 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
windows 下安装nodejs 环境变量设置
2017/02/02 NodeJs
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
Bootstrap按钮组实例详解
2017/07/03 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
浅谈webpack性能榨汁机(打包速度优化)
2019/01/09 Javascript
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
2020/04/11 Javascript
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
跟老齐学Python之做一个小游戏
2014/09/28 Python
python实现随机梯度下降(SGD)
2020/03/24 Python
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
pandas 对日期类型数据的处理方法详解
2019/08/08 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
如何基于python把文字图片写入word文档
2020/07/31 Python
Python3获取cookie常用三种方案
2020/10/05 Python
英国最大的手表网站:The Watch Hut
2017/03/31 全球购物
Skyscanner加拿大:全球旅行搜索平台
2018/11/19 全球购物
Simons官方网站:加拿大时尚零售商
2020/02/20 全球购物
智乐游戏测试笔试题
2014/05/21 面试题
现场施工员岗位职责
2015/04/11 职场文书
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android
如何利用Python实现n*n螺旋矩阵
2022/01/18 Python