nodejs log4js 使用详解


Posted in NodeJs onMay 31, 2019

本文章针对 log4js v4.3

本文对自己用log4js的技术点简单的做一个记录,有一些技术点没有用到或者写全,会在后面用到的时候进行更新。

先大概的对log4js 的基本用法做一个总结,使用configure()方法对日志输出进行配置,使用 getlogger()方法获取logger对象,然后使用logger 对象进行打印各个级别的日志。其中比较复杂的是 configure()方法中的配置对象appenders 和 categories 下面重点讲解这两个对象

安装

npm install --save log4js

日志级别level

log4js的分为以下几个级别,级别的顺序也是按如下排列,logger只会打印大于等于logger对象设置的level的日志。

  • trace
  • debug
  • info
  • warn
  • error
  • fatal

简单的用法

var log4js = require('log4js');
var logger = log4js.getLogger();
logger.level = 'debug';
logger.debug("Some debug messages");

getLogger()方法返回一个logger对象,想对日志进行记录就必须使用logger对象,将logger对象的 level设置为debug(默认为OFF不会输出任何日志)

在node 环境运行上面的代码之后发现在控制台打印出了对应的日志信息,但是这跟我想要的完全不一样,我想要的是根据我自己的想法将日志进行分类方便查找和统计。接下来我们就看如何对日志进行分类。

configure(string | object) 方法

通过调用configure 方法就可以实现我们对日志进行分类管理的目的。方法的参数可以是一个字符串或者是一个object 字符串参数被视为用于加载配置的文件名,配置文件是一个json 文件,也可以直接将配置对象传给configure。

配置对象

本次只对配置对象中最常用的appenders 和categories 进行介绍,还有部分属性暂时还没有用到等用到的时候在进行补充,如果平常用的话这两个属性应该就够了。

简单的总结一下这两个属性,先有一个概念性的认识了解一下他们分别是干什么的。

appenders 主要是用来定义以怎样的方式输出,输出到哪里(主要功能不仅限于)

categories 是用来定义日志输出的规则然后调用之前定义好的 appenders 进行输出

写一个简单的例子方便理解一下

const log4js = require('log4js');
log4js.configure({
 appenders: {
  out: { type: 'stdout' },
  app: { type: 'file', filename: 'application.log' }
 },
 categories: {
  default: { appenders: [ 'out', 'app' ], level: 'debug' }
 }
});

var logger = log4js.getLogger();
logger.debug("Some debug messages");

运行上的代码将会创建application.log 文件在项目目录下,同时会把日志打到控制台和 application.log文件中.
上面定义了两个appender 一个是输出到 stdout 一个是输出到 file ,可以看出appender主要使用来定义输出位置的
同时在categories 中定义了一个规则,调用了appender中定义的输出,并且输出级别为 debug

appenders

appenders 的是一个map, key 代表的是appender的名字是一个字符串,value里面有一个必选的属性是type,根据type 的不同value 的格式也不一样,下面我们说几种常用的 type

file

file 日志将会输出到指定的文件中。

例子

log4js.configure({
 appenders: {
  everything: { type: 'file', filename: 'all-the-logs.log' }
 },
 categories: {
  default: { appenders: [ 'everything' ], level: 'debug' }
 }
});

const logger = log4js.getLogger();
logger.debug('I will be logged in all-the-logs.log');

常用配置属性

1. type:'file'
2. filename string 输出文件的名字
3. maxLogSize integer日志文件的最大大小(以字节为单位)。如果未指定,则不会发生日志滚动。
4. backups日志滚动期间要保留的旧日志文件数默认为5
5. layout 默认是basic layout
6. keepFileExt boolean  默认为false 滚动日志文件时保留文件扩展名(file.log变为file.1.log而不是file.log.1)
7. compress 对滚动的日志文件进行压缩

dateFile

dateFile 日志的滚动将根据配置的时间格式进行滚动而不是文件大小

例子

log4js.configure({
 appenders: {
  everything: { type: 'dateFile', filename: 'all-the-logs.log' }
 },
 categories: {
  default: { appenders: [ 'everything' ], level: 'debug' }
 }
});

常用配置属性

1. type:'dateFile'
2. filename string 输出文件的名字
3. pattern(默认为.yyyy-MM-dd) - 用于确定何时滚动日志的模式。
4. layout 默认是basic layout
5. daysToKeep integer(默认为0) - 如果此值大于零,则在日志滚动期间将删除早于该天数的文件。
6. keepFileExt (默认为false) - 在滚动日志文件时保留文件扩展名(file.log变为file.2017-05-30.log而不是file.log.2017-05-30
7. compress 对滚动的日志文件进行压缩

categories

categories 也是一个map类型的数据,key是 category 的名字是一个字符串,value 是一个对象。

value 的常用属性

  1. level 定义打印日志的级别
  2. appenders 定义打印的appender

getLogger([category]) 方法

getLogger 方法返回的是一个logger 对象,logger对象用来打印各个级别的日志。

getlogger 方法有一个可选参数category的名字,不写的情况会使用 categories 中default 定义的规则进行打印,填写之后会根据对应的 category定义的规则进行打印日志。

参考文档 api

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
将nodejs打包工具整合到鼠标右键的方法
May 11 NodeJs
Nodejs极简入门教程(三):进程
Oct 27 NodeJs
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
Dec 18 NodeJs
使用nodejs下载风景壁纸
Feb 05 NodeJs
nodejs个人博客开发第五步 分配数据
Apr 12 NodeJs
nodejs6下使用koa2框架实例
May 18 NodeJs
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
Sep 18 NodeJs
nodejs async异步常用函数总结(推荐)
Nov 17 NodeJs
nodejs爬虫初试superagent和cheerio
Mar 05 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 NodeJs
nodejs异步编程基础之回调函数用法分析
Dec 26 NodeJs
Nodejs + Websocket 指定发送及群聊的实现
Jan 09 NodeJs
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
May 30 #NodeJs
nodejs中实现修改用户路由功能
May 24 #NodeJs
nodejs实现用户登录路由功能
May 22 #NodeJs
基于nodejs的微信JS-SDK简单应用实现
May 21 #NodeJs
nodejs中实现用户注册路由功能
May 20 #NodeJs
nodejs实现日志读取、日志查找及日志刷新的方法分析
May 20 #NodeJs
NodeJS读取分析Nginx错误日志的方法
May 14 #NodeJs
You might like
利用文件属性结合Session实现在线人数统计
2006/10/09 PHP
PHP常用设计模式之委托设计模式
2016/02/13 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
php封装一个异常的处理类
2017/06/08 PHP
Laravel学习教程之request validation的编写
2017/10/25 PHP
javascript或asp实现的判断身份证号码是否正确两种验证方法
2009/11/26 Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
2016/06/21 Javascript
高效Web开发的10个jQuery代码片段
2016/07/22 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
2018/02/05 Javascript
使用vue完成微信公众号网页小记(推荐)
2019/04/28 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
Element Card 卡片的具体使用
2020/07/26 Javascript
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
python通过ElementTree操作XML获取结点读取属性美化XML
2013/12/02 Python
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
python实现爬虫下载漫画示例
2014/02/16 Python
Python线程中对join方法的运用的教程
2015/04/09 Python
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
Python企业编码生成系统之主程序模块设计详解
2019/07/26 Python
numpy的Fancy Indexing和array比较详解
2020/06/11 Python
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
麦当劳印度网上订餐:McDelivery
2020/03/16 全球购物
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
函授本科毕业生自我鉴定
2013/10/16 职场文书
毕业生优秀推荐信
2013/11/26 职场文书
通用求职信范文模板分享
2013/12/27 职场文书
进步之星获奖感言
2014/02/22 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
销售内勤岗位职责
2014/04/15 职场文书
2014年采购工作总结
2014/11/20 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
海弦WR-800F
2022/04/05 无线电