本文章针对 log4js v4.3
本文对本身用log4js的技术点简单的作一个记录,有一些技术点没有用到或者写全,会在后面用到的时候进行更新。html
先大概的对log4js 的基本用法作一个总结,使用configure()
方法对日志输出进行配置,使用getlogger()
方法获取logger
对象,而后使用logger 对象进行打印各个级别的日志。其中比较复杂的是configure()
方法中的配置对象appenders 和 categories
下面重点讲解这两个对象
npm install --save log4js
node
log4js的分为如下几个级别,级别的顺序也是按以下排列,logger只会打印大于等于logger对象设置的level的日志。git
var log4js = require('log4js'); var logger = log4js.getLogger(); logger.level = 'debug'; logger.debug("Some debug messages");
getLogger()
方法返回一个logger对象,想对日志进行记录就必须使用logger对象,将logger对象的 level设置为debug
(默认为OFF
不会输出任何日志)github
在node 环境运行上面的代码以后发如今控制台打印出了对应的日志信息,可是这跟我想要的彻底不同,我想要的是根据我本身的想法将日志进行分类方便查找和统计。接下来咱们就看如何对日志进行分类。npm
经过调用configure
方法就能够实现咱们对日志进行分类管理的目的。方法的参数能够是一个字符串或者是一个object 字符串参数被视为用于加载配置的文件名,配置文件是一个json 文件,也能够直接将配置对象传给configure。json
本次只对配置对象中最经常使用的appenders
和categories
进行介绍,还有部分属性暂时尚未用到等用到的时候在进行补充,若是日常用的话这两个属性应该就够了。api
简单的总结一下这两个属性,先有一个概念性的认识了解一下他们分别是干什么的。
appenders
主要是用来定义以怎样的方式输出,输出到哪里(主要功能不只限于)
categories
是用来定义日志输出的规则而后调用以前定义好的appenders
进行输出
写一个简单的例子方便理解一下app
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
ui
appenders
的是一个map, key 表明的是appender的名字是一个字符串,value里面有一个必选的属性是type
,根据type 的不一样value 的格式也不同,下面咱们说几种经常使用的 typedebug
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 日志的滚动将根据配置的时间格式进行滚动而不是文件大小
例子
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 也是一个map类型的数据,key是 category 的名字是一个字符串,value 是一个对象。
value 的经常使用属性
getLogger
方法返回的是一个logger
对象,logger对象用来打印各个级别的日志。
getlogger 方法有一个可选参数category的名字,不写的状况会使用 categories 中default 定义的规则进行打印,填写以后会根据对应的 category定义的规则进行打印日志。