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 (十一) 实战表单验证与自动完成提示插件
Feb 23 Javascript
基于jquery的点击链接插入链接内容的代码
Jul 31 Javascript
详解JavaScript的Date对象(制作简易钟表)
Apr 07 Javascript
ECMAScript6轮播图实践知识总结
Aug 17 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
Oct 12 Javascript
实现easyui的datagrid导出为excel的示例代码
Nov 10 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
Apr 11 Javascript
使用JavaScript根据图片获取条形码的方法
Jul 04 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
Mar 01 Javascript
最后说说Vue2 SSR 的 Cookies 问题
May 25 Javascript
jQuery编写QQ简易聊天框
Aug 27 jQuery
node.js如何根据URL返回指定的图片详解
Oct 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
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
实例详解PHP中html word 互转的方法
2016/01/28 PHP
基于laravel-admin 后台 列表标签背景的使用方法
2019/10/03 PHP
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
前端设计师们最常用的JS代码汇总
2016/09/25 Javascript
JavaScript用JSONP跨域请求数据实例详解
2017/01/06 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
Nodejs回调加超时限制两种实现方法
2017/06/09 NodeJs
简单快速的实现js计算器功能
2017/08/17 Javascript
最基础的vue.js双向绑定操作
2017/08/23 Javascript
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
vue 修改 data 数据问题并实时显示操作
2020/09/07 Javascript
python中from module import * 的一个坑
2014/07/20 Python
Python如何获取系统iops示例代码
2016/09/06 Python
Android分包MultiDex策略详解
2017/10/30 Python
Python中import机制详解
2017/11/14 Python
vscode 远程调试python的方法
2017/12/01 Python
Python简单实现网页内容抓取功能示例
2018/06/07 Python
Python pip使用超时问题解决方案
2020/08/03 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
Jmeter调用Python脚本实现参数互相传递的实现
2021/01/22 Python
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
行政办公室岗位职责
2014/03/18 职场文书
烹饪大赛策划方案
2014/05/26 职场文书
学校创先争优活动总结
2014/08/28 职场文书