log4js
-
appenders
- 是一种map的数据结构,其中的每个value ** 必须含有 一个String属性的 type ** 字段
-
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中!
-
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()去使其打印在日志系统中。
-
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
-
layout
这里说 layout 是一个函数用于 格式化 appenders 的输出
- configuration
- coloured