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操作Select 简单方便 一个js插件搞定
Nov 12 Javascript
node.js中的fs.fchown方法使用说明
Dec 16 Javascript
node.js中的fs.open方法使用说明
Dec 17 Javascript
JavaScript中的pow()方法使用详解
Jun 15 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
Dec 27 Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
Feb 03 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
Jun 13 Javascript
react native 获取地理位置的方法示例
Aug 28 Javascript
详解在Node.js中发起HTTP请求的5种方法
Jan 10 Javascript
vue实现中部导航栏布局功能
Jul 30 Javascript
vue iview实现动态新增和删除
Jun 17 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
Jul 19 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程序员编程注意事项
2008/04/10 PHP
使用PHP会话(Session)实现用户登陆功能
2013/06/29 PHP
Zend Studio 实用快捷键一览表(精心整理)
2013/08/10 PHP
ThinkPHP之N方法实例详解
2014/06/20 PHP
destoon实现调用热门关键字的方法
2014/07/15 PHP
php读取csc文件并输出
2015/05/21 PHP
php实现学生管理系统
2020/03/21 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
setAttribute 与 class冲突解决
2008/02/17 Javascript
关于document.cookie的使用javascript
2008/04/11 Javascript
判断控件是否已加载完成的代码
2010/02/24 Javascript
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
JS选项卡动态替换banner图片路径的方法
2015/05/11 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
Javascript动画效果(3)
2016/10/11 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
2017/02/26 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
微信小程序实现文字跑马灯效果
2020/05/26 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
2019/05/22 Javascript
js实现抽奖功能
2020/11/24 Javascript
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
Python中的pathlib.Path为什么不继承str详解
2019/06/23 Python
Pytorch实现的手写数字mnist识别功能完整示例
2019/12/13 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
Pandas把dataframe或series转换成list的方法
2020/06/14 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
酒店总经理欢迎词
2014/01/15 职场文书
乡镇办公室工作决心书
2014/03/11 职场文书
青年文明号申报材料
2014/12/23 职场文书
小学少先队工作总结2015
2015/05/26 职场文书