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 19 Javascript
javascript ready和load事件的区别示例介绍
Aug 30 Javascript
jQuery实现鼠标划过修改样式的方法
Apr 14 Javascript
JQuery包裹DOM节点的方法
Jun 11 Javascript
jQuery mobile 移动web(4)
Dec 20 Javascript
JavaScript之iterable_动力节点Java学院整理
Jun 29 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
Sep 27 Javascript
bootstrap下拉框动态赋值方法
Aug 10 Javascript
微信小程序动态显示项目倒计时
Jun 20 Javascript
这样回答继承可能面试官更满意
Dec 10 Javascript
JavaScript this指向相关原理及实例解析
Jul 10 Javascript
vue vant中picker组件的使用
Nov 03 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 PDO函数库详解
2010/04/27 PHP
php知道与问问的采集插件代码
2010/10/12 PHP
jQuery 源码分析笔记
2011/05/25 PHP
浅谈discuz密码加密的方式
2014/05/22 PHP
PHP模拟asp中response类实现方法
2015/08/08 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
php实现微信扫码支付
2017/03/26 PHP
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
JS实现1000以内被3或5整除的数字之和
2016/02/18 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
JavaScript实现格式化字符串函数String.format
2016/12/16 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
看看“疫苗查询”小程序有温度的代码
2018/07/31 Javascript
vue 纯js监听滚动条到底部的实例讲解
2018/09/03 Javascript
基于vue实现探探滑动组件功能
2020/05/29 Javascript
vue中watch和computed的区别与使用方法
2020/08/23 Javascript
Python实现的简单万年历例子分享
2014/04/25 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
Python实现注册、登录小程序功能
2018/09/21 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
python画图的函数用法以及技巧
2019/06/28 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
在python3.64中安装pyinstaller库的方法步骤
2020/06/02 Python
深入理解css属性的选择对动画性能的影响
2016/04/20 HTML / CSS
简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
2016/11/20 面试题
施工班组长岗位职责
2014/01/05 职场文书
升旗仪式主持词
2014/03/19 职场文书
副校长竞聘演讲稿
2014/09/01 职场文书
开发房地产协议书
2014/09/14 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
中标通知书范本
2015/04/17 职场文书
新年晚会开场白
2015/05/29 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python
Nginx中使用Lua脚本与图片的缩略图处理的实现
2022/03/18 Servers
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis