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 filter函数使用方法
May 19 Javascript
Js实现无刷新删除内容
Apr 29 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
Sep 04 Javascript
JavaScript中Array对象用法实例总结
Nov 29 Javascript
微信小程序 常用工具类详解及实例
Feb 15 Javascript
webpack学习笔记之优化缓存、合并、懒加载
Aug 24 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
Mar 06 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
Mar 08 Javascript
AngularJs中$cookies简单用法分析
May 30 Javascript
小程序根据手机机型设置自定义底部导航距离
Jun 04 Javascript
vue+ESLint 配置保存 自动格式化代码
Mar 17 Javascript
Python版实现微信公众号扫码登陆
May 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
学习discuz php 引入文件的方法DISCUZ_ROOT
2009/06/21 PHP
PHP strtotime函数详解
2009/12/18 PHP
经典PHP加密解密函数Authcode()修复版代码
2015/04/05 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
2019/09/11 PHP
jQuery输入城市查看地图使用介绍
2013/05/08 Javascript
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
JavaScript输入邮箱自动提示实例代码
2014/01/13 Javascript
jQuery后代选择器用法实例
2014/12/23 Javascript
JavaScript中的Math.E属性使用详解
2015/06/12 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
全面了解JavaScript的数据类型转换
2016/07/01 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
Vue.js对象转换实例
2017/06/07 Javascript
获取当前按钮或者html的ID名称实例(推荐)
2017/06/23 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
2020/04/16 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
2019/09/29 Javascript
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
python解析中国天气网的天气数据
2014/03/21 Python
星球大战与Python之间的那些事
2016/01/07 Python
Python标准模块--ContextManager上下文管理器的具体用法
2017/11/27 Python
Python实现将json文件中向量写入Excel的方法
2018/03/26 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
使用Django2快速开发Web项目的详细步骤
2019/01/06 Python
详解Python下载图片并保存本地的两种方式
2019/05/15 Python
Pycharm 如何一键加引号的方法步骤
2021/02/05 Python
腾讯技术类校园招聘笔试试题
2014/05/06 面试题
电子专业推荐信范文
2013/11/18 职场文书
考试不及格的检讨书
2014/01/22 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
学生自我评语
2015/01/04 职场文书
Nginx HTTP跳转至HTTPS
2022/05/15 Servers