log4js(4x版本)使用指南

315 阅读2分钟

log4js

  1. appenders

  • 是一种map的数据结构,其中的每个value ** 必须含有 一个String属性的 type ** 字段
  1. categories

  • 是一种map的数据结构,并且 ** 必须申明 一个 default map ** ,以免当我们不能匹配到任何一个 Category 的时候 , ** 任何一个 Category 都拥有2个属性 ** 。
"categories": {
    "default": {
      "appenders": ["app", "errors"],
      "level": "DEBUG"
    },
    "http": {
      "appenders": ["access"],
      "level": "DEBUG"
    }
  }

像来自官方demo中的例子,可以看到每个Category 拥有2个属性分别是 appenders 和 level。

  • 属性一 appender:
    可以看到是至少由一个appender的key的数组。像这样
log4js.configure({
    appenders: {
        out: {
            type: 'stdout'
        },
        app: {
            type: 'file',
            filename: '../log/application.log'
        }
    },
    categories: {
        default: {
            appenders: ['out', 'app'],
            level: 'debug'
        }
    }
});
  • 属性二 level: 当我们 设置了 level 为error的 时候,appenders就仅仅接收levle 为 error、fatal 和 mark 的log 事件,info、warn、debug 和trace 将被忽略。
    层级图
  • ** options** 可选回调函数 默认为 false, 如果当我们设置为true的时候, log4js 将自动为您生成 ** 对应的行数和文件名 ** 在此event中!
  1. about pm2

这次 笔者 暂时没有用到就先不介绍 以后再慢慢展开
4. ### Loggers - log4js.getLogger([category])

/**
 * Initialise log4js first, so we don't miss any log messages
 */
	var log4js = require('log4js');
	log4js.configure('./config/log4js.json');
	var log = log4js.getLogger("startup");

这里 我们直接看到 它的使用方式 和 落地场景: 我们在我们需要引入的js文件中, 传入一个 String类型的参数, 当然 就像我们之前提到的 如果没有传入 参数的话 就会去 categories 中 拿到 key 为 default的 Category getLogger(arguments) 会返回一个 Logger 对象 ,它的log 事件会严格遵守 我们在 Category 中所声明的。
在通过 getLogger 获取 Logger 实例时,唯一可以传的一个参数就是 loggerCategory(如 'example' ),通过这个参数来指定 Logger 实例属于哪个类别。

	exports.logger = log4js.getLogger(); //默认取default
	exports.errorLogger = log4js.getLogger("crash")


官方文档中 提到 , 以logger 为例子 ,当 我们使用了logger.info(text),我们可以定制化 text 通过layouts。
当然 如果我们在 Category 中定义的level明显高于我们在 js文件中定义的logger.level 事件,我们也可以使用is< level >Enabled去将其打印在日志系统中, 如果我们在categories中定义level为error,但是我们可以通过logger.isInfoEnaled()去使其打印在日志系统中。

  1. shutdown

        var log4js = require('log4js');
        log4js.configure('./config/log4js.json');
        var log = log4js.getLogger("startup");
        log4js.shutdown(function(){
          console.log('I am shutdown')
        })

可以看到 我们这里 输出了 I am shutdown

  1. layout

这里说 layout 是一个函数用于 格式化 appenders 的输出

  • configuration
  • coloured

日志隔离