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 相关文章推荐
来自chinaz的ajax获取评论代码
May 03 Javascript
非常有用的40款jQuery 插件推荐(系列二)
Dec 25 Javascript
JavaScript获取并更改input标签name属性的方法
Jul 02 Javascript
js小数运算出现多位小数如何解决
Oct 08 Javascript
js 判断各种数据类型的简单方法(推荐)
Aug 29 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
Oct 19 Javascript
从零学习node.js之详解异步控制工具async(八)
Feb 27 Javascript
JS获取当前地理位置的方法
Oct 25 Javascript
element ui里dialog关闭后清除验证条件方法
Feb 26 Javascript
微信小程序实现手指触摸画板
Jul 09 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
May 21 Javascript
vue项目中微信登录的实现操作
Sep 08 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用正则表达式匹配中文实例详解
2013/11/06 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
2014/10/26 PHP
php中cookie实现二级域名可访问操作的方法
2014/11/11 PHP
php生成rss类用法实例
2015/04/14 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
2016/08/19 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
最佳JS代码编写的14条技巧
2011/01/09 Javascript
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
js中实现字符串和数组的相互转化详解
2016/01/24 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
js实现单张图片平移切换效果
2017/10/11 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
vue穿梭框实现上下移动
2021/01/29 Vue.js
简单谈谈Python中函数的可变参数
2016/09/02 Python
python中正则的使用指南
2016/12/04 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
2018/03/04 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
python3实现二叉树的遍历与递归算法解析(小结)
2019/07/03 Python
python的命名规则知识点总结
2019/10/04 Python
wxPython实现整点报时
2019/11/18 Python
Python稀疏矩阵及参数保存代码实现
2020/04/18 Python
Python如何发送与接收大型数组
2020/08/07 Python
mac安装python3后使用pip和pip3的区别说明
2020/09/01 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
办护照工作证明范本
2014/01/14 职场文书
2015年世界无烟日演讲稿
2015/03/18 职场文书
2015年实习单位评语
2015/03/25 职场文书
运动会致辞稿
2015/07/29 职场文书
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers