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 相关文章推荐
Prototype Object对象 学习
Jul 12 Javascript
Jquery替换已存在于element上的event的方法
Mar 09 Javascript
google 搜索框添加关键字实现代码
Apr 24 Javascript
JS操作Cookie写入和读取实例代码
Oct 20 Javascript
js简单的弹出框有关闭按钮
May 05 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
Aug 24 Javascript
深入理解Vue.js源码之事件机制
Sep 27 Javascript
node.js到底要不要加分号浅析
Jul 11 Javascript
vue 地区选择器v-distpicker的常用功能
Jul 23 Javascript
jQuery实现可以计算进制转换的计算器
Oct 19 jQuery
jQuery实现简单弹幕制作
Dec 10 jQuery
vue项目如何打包之项目打包优化(让打包的js文件变小)
Apr 30 Vue.js
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时的知识积累总结
2013/06/07 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
PHP使用DOM对XML解析处理操作示例
2019/07/04 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
jquery中ajax调用json数据的使用说明
2011/03/17 Javascript
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
2017/01/23 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
2017/06/04 Javascript
javascript中UMD规范的代码推演
2018/08/29 Javascript
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
jQuery实现本地存储
2020/12/22 jQuery
[01:03:56]Mineski vs TNC 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
django之自定义软删除Model的方法
2019/08/14 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
2019/10/14 Python
python 使用递归的方式实现语义图片分割功能
2020/07/16 Python
python利用google翻译方法实例(翻译字幕文件)
2020/09/21 Python
纯CSS3实现移动端展开和收起效果的示例代码
2020/04/26 HTML / CSS
浅谈html5 响应式布局
2014/12/24 HTML / CSS
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
英国著名药妆店:Superdrug
2021/02/13 全球购物
什么是事务?事务有哪些性质?
2012/03/11 面试题
部队万能检讨书
2014/02/20 职场文书
中国梦口号
2014/06/13 职场文书
中学生勤俭节约倡议书
2015/04/29 职场文书
喋血孤城观后感
2015/06/08 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python
基于JavaScript实现省市联动效果
2021/06/22 Javascript
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
2021/07/07 Servers
python数字图像处理:图像的绘制
2022/06/28 Python