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中yield实用简洁实现方式
Jun 12 Javascript
json的前台操作和后台操作实现代码
Jan 20 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
Dec 27 Javascript
JavaScript制作简易的微信打飞机
Mar 31 Javascript
JavaScript中switch语句的用法详解
Jun 03 Javascript
JavaScript数据类型判定的总结笔记
Jul 31 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
Feb 21 Javascript
vue监听scroll的坑的解决方法
Sep 07 Javascript
动态创建Angular组件实现popup弹窗功能
Sep 15 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
Jan 23 jQuery
Angular6 用户自定义标签开发的实现方法
Jan 08 Javascript
处理JavaScript值为undefined的7个小技巧
Jul 28 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封装分页工具类
2017/01/14 PHP
PHP实现字符串的全排列详解
2019/04/24 PHP
PHP封装cURL工具类与应用示例
2019/07/01 PHP
裁剪字符串trim()自定义改进版
2013/04/10 Javascript
js 加密压缩出现bug解决方案
2014/11/25 Javascript
基于jquery的手风琴图片展示效果实现方法
2014/12/16 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
使用原生js写ajax实例(推荐)
2017/05/31 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
vue+node实现图片上传及预览的示例方法
2018/11/22 Javascript
python3.6连接MySQL和表的创建与删除实例代码
2017/12/28 Python
python实现k-means聚类算法
2018/02/23 Python
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
python实现画五角星和螺旋线的示例
2019/01/20 Python
Django 中间键和上下文处理器的使用
2019/03/17 Python
python将数组n等分的实例
2019/12/02 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
keras小技巧——获取某一个网络层的输出方式
2020/05/23 Python
Python函数参数分类原理详解
2020/05/28 Python
Python利用matplotlib绘制散点图的新手教程
2020/11/05 Python
python 6种方法实现单例模式
2020/12/15 Python
工程师求职简历的自我评价分享
2013/10/10 职场文书
英文自荐信
2013/12/15 职场文书
职称评定自我鉴定
2014/03/18 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书
党课主持词大全
2015/06/30 职场文书
勤俭节约主题班会
2015/08/13 职场文书
[有人@你]你有一封绿色倡议书,请查收!
2019/07/18 职场文书
Python3 类型标注支持操作
2021/06/02 Python
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技