log4js 是 nodejs 日志处理模块。
最简单的例子:
let
log4js
=
require
(
'log4js'
)
let
logger
=
log4js
.
getLogger
(
''
)
logger
.
debug
(
"Time:"
,
new
Date
())
输出:
log4js 的
等级概念:
logger.debug是日志的分级,log4js 的日志分为九个等级:
{
ALL: new Level(Number.MIN_VALUE, "ALL"),
TRACE: new Level(5000, "TRACE"),
DEBUG: new Level(10000, "DEBUG"),
INFO: new Level(20000, "INFO"),
WARN: new Level(30000, "WARN"),
ERROR: new Level(40000, "ERROR"),
FATAL: new Level(50000, "FATAL"),
MARK: new Level(9007199254740992, "MARK"), // 2^53
OFF: new Level(Number.MAX_VALUE, "OFF")
}
ALL 和 OFF 这两个等级并不会实际使用。
log4js 的
类型概念:
let
log4js
=
require
(
'log4js'
)
let
logger
=
log4js
.
getLogger
(
'example'
)
logger
.
debug
(
"Time:"
,
new
Date
())
输出:
let logger=log4js.getLogger('
example’)
这个是 getLogger()唯一可以传递的参数。为日志提供了第二个可以区分的维度,比如可以为每个文件设置不同的 category。更好的区分日志来源于哪一个模块。
Appender
配置日志输出到哪里,log4js 的配置信息可以存成 json 文件,json 文件中的相对路径可能会产生一些问题,
需要注意
!
{
"appenders"
:
[
{
"type"
:
"dateFile"
,
"filename"
:
"./logs/"
,
"pattern"
:
"eniw-yyyy-MM-dd.log"
,
"alwaysIncludePattern"
:
true
}]
}
(每天一个日志文件)
在代码中调用该配置信息即可:
let
log4js
=
require
(
'log4js'
)
log4js
.
configure
(
path
.
join
(
__dirname
,
'./log4js.json'
))
var
logTest
=
log4js
.
getLogger
(
'logTest'
)
logTest
.
debug
(
"Time:"
,
new
Date
())
过滤级别和类别
- 使用 logLevelFilter 和 level 来对日志的级别进行过滤,所有权重大于或者等于DEBUG的日志将会输出。这也是之前提到的日志级别权重的意义;
- 通过 category 来选择要输出日志的类别,category2 下面的日志被过滤掉了,该配置也接受一个数组,例如 ['category1', 'category2'],这样配置两个类别的日志都将输出到文件中。