Node.js 日志系统 log4js 介绍

一. 日志分级

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")
}

c6ef61e47e46f843f752a561bae450d0_r.jpg
二. 日志类型
.getLogger()
控制的就是下面这个地方
W{(TROLYBT[UW`P9S%HF1(T.png

三. 日志Appender(即日志输出到哪里)

console 和 File 都是 log4js 提供的 appender,除此之外还有:
DateFile:日志输出到文件,日志文件可以安特定的日期模式滚动,例如今天输出到 default-2016-08-21.log,明天输出到 default-2016-08-22.log;
SMTP:输出日志到邮件;
Mailgun:通过 Mailgun API 输出日志到 Mailgun;
levelFilter 可以通过 level 过滤;
等等其他一些 appender

四. 过滤级别和类别

我们可以调整 appender 的配置,对日志的级别和类别进行过滤:
var log4js = require('log4js');
log4js.configure({
  appenders: [{
    type: 'logLevelFilter',
    level: 'DEBUG',
    category: 'category1',
    appender: {
      type: 'file',
      filename: 'default.log'
    }
  }]
})
var logger1 = log4js.getLogger('category1');
var logger2 = log4js.getLogger('category2');
logger1.debug("Time:", new Date());
logger1.trace("Time:", new Date());
logger2.debug("Time:", new Date());
  • 使用 logLevelFilter 和 level 来对日志的级别进行过滤,所有权重大于或者等于DEBUG的日志将会输出。这也是之前提到的日志级别权重的意义
  • 通过 category 来选择要输出日志的类别,category2 下面的日志被过滤掉了,该配置也接受一个数组,例如 ['category1', 'category2'],这样配置两个类别的日志都将输出到文件中。

五. Layout

Layout 是 log4js 提供的高级功能,通过 layout 我们可以自定义每一条输出日志的格式。

log4js 内置了四中类型的格式:

  • messagePassThrough:仅仅输出日志的内容;
  • basic:在日志的内容前面会加上时间、日志的级别和类别,通常日志的默认 layout;
  • colored/coloured:在 basic 的基础上给日志加上颜色,appender Console 默认使用的就是这个 layout;
  • pattern:这是一种特殊类型,可以通过它来定义任何你想要的格式。

Logger(输出的日志内容)、Appender (日志输出到哪里)、 Layout (如何输出日志)


lxq_13
1 声望0 粉丝