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 相关文章推荐
ExtJS Ext.MessageBox.alert()弹出对话框详解
Apr 02 Javascript
突发奇想的一个jquery插件
Nov 19 Javascript
javascript中xml操作实现代码
Nov 21 Javascript
Javascript异步编程模型Promise模式详细介绍
May 08 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
Feb 16 Javascript
javascript 动态修改css样式方法汇总(四种方法)
Aug 27 Javascript
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
Oct 09 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
Jan 08 Javascript
JS完成画圆圈的小球
Mar 07 Javascript
Vue.js devtool插件安装后无法使用的解决办法
Nov 27 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
Feb 28 Javascript
React服务端渲染原理解析与实践
Mar 04 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读取xml实例代码
2010/01/28 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
PHP使用PDO访问oracle数据库的步骤详解
2017/09/29 PHP
Javascript学习笔记二 之 变量
2010/12/15 Javascript
js模仿jquery的写法示例代码
2013/06/16 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
javascript将相对路径转绝对路径示例
2014/03/14 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
js绘制圆形和矩形的方法
2015/08/05 Javascript
最全面的百度地图JavaScript离线版开发
2016/09/10 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
2017/07/31 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
nodejs更改项目端口号的方法
2018/05/13 NodeJs
Vue对象赋值视图不更新问题及解决方法
2019/06/03 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
vue中的v-model原理,与组件自定义v-model详解
2020/08/04 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
python字典的遍历3种方法详解
2019/08/10 Python
python 内置函数汇总详解
2019/09/16 Python
python中os包的用法
2020/06/01 Python
Python类super()及私有属性原理解析
2020/06/15 Python
CSS3的一个简单导航栏实现
2015/08/03 HTML / CSS
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
美国摄影爱好者购物网站:Focus Camera
2016/10/21 全球购物
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
大学中国梦演讲稿
2014/04/23 职场文书
社区护士演讲稿
2014/08/27 职场文书
邀请函样本
2015/02/02 职场文书
网吧温馨提示
2015/07/17 职场文书
使用Pytorch训练two-head网络的操作
2021/05/28 Python