nodejs log4js 使用详解
本文章针对log4jsv4.3
本文对自己用log4js的技术点简单的做一个记录,有一些技术点没有用到或者写全,会在后面用到的时候进行更新。
先大概的对log4js的基本用法做一个总结,使用configure()方法对日志输出进行配置,使用getlogger()方法获取logger对象,然后使用logger对象进行打印各个级别的日志。其中比较复杂的是configure()方法中的配置对象appenders和categories下面重点讲解这两个对象
安装
npminstall--savelog4js
日志级别level
log4js的分为以下几个级别,级别的顺序也是按如下排列,logger只会打印大于等于logger对象设置的level的日志。
- trace
- debug
- info
- warn
- error
- fatal
简单的用法
varlog4js=require('log4js'); varlogger=log4js.getLogger(); logger.level='debug'; logger.debug("Somedebugmessages");
getLogger()方法返回一个logger对象,想对日志进行记录就必须使用logger对象,将logger对象的level设置为debug(默认为OFF不会输出任何日志)
在node环境运行上面的代码之后发现在控制台打印出了对应的日志信息,但是这跟我想要的完全不一样,我想要的是根据我自己的想法将日志进行分类方便查找和统计。接下来我们就看如何对日志进行分类。
configure(string|object)方法
通过调用configure方法就可以实现我们对日志进行分类管理的目的。方法的参数可以是一个字符串或者是一个object字符串参数被视为用于加载配置的文件名,配置文件是一个json文件,也可以直接将配置对象传给configure。
配置对象
本次只对配置对象中最常用的appenders和categories进行介绍,还有部分属性暂时还没有用到等用到的时候在进行补充,如果平常用的话这两个属性应该就够了。
简单的总结一下这两个属性,先有一个概念性的认识了解一下他们分别是干什么的。
appenders主要是用来定义以怎样的方式输出,输出到哪里(主要功能不仅限于)
categories是用来定义日志输出的规则然后调用之前定义好的appenders进行输出
写一个简单的例子方便理解一下
constlog4js=require('log4js'); log4js.configure({ appenders:{ out:{type:'stdout'}, app:{type:'file',filename:'application.log'} }, categories:{ default:{appenders:['out','app'],level:'debug'} } }); varlogger=log4js.getLogger(); logger.debug("Somedebugmessages");
运行上的代码将会创建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'} } }); constlogger=log4js.getLogger(); logger.debug('Iwillbeloggedinall-the-logs.log');
常用配置属性
1.type:'file'
2.filenamestring输出文件的名字
3.maxLogSizeinteger日志文件的最大大小(以字节为单位)。如果未指定,则不会发生日志滚动。
4.backups日志滚动期间要保留的旧日志文件数默认为5
5.layout默认是basiclayout
6.keepFileExtboolean 默认为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.filenamestring输出文件的名字
3.pattern(默认为.yyyy-MM-dd)-用于确定何时滚动日志的模式。
4.layout默认是basiclayout
5.daysToKeepinteger(默认为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的常用属性
- level定义打印日志的级别
- appenders定义打印的appender
getLogger([category])方法
getLogger方法返回的是一个logger对象,logger对象用来打印各个级别的日志。
getlogger方法有一个可选参数category的名字,不写的情况会使用categories中default定义的规则进行打印,填写之后会根据对应的category定义的规则进行打印日志。
参考文档api
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。