var log4js = require('log4js');
var logger = log4js.getLogger('example');
logger.debug("Time:", new Date());
在通过 getLogger 获取 Logger 实例时,唯一可以传的一个参数就是 loggerCategory(如 ‘example’ ),通过这个参数来指定 Logger 实例属于哪个类别。这与 TJ 的 debug 是一样的:
var debug = require('debug')('worker');setInterval(function(){
debug('doing some work');
}, 1000);
在 debug 中 ‘worker’ ,同样也是为日志分类。好了,回来运行 node set-catetory.js :
[2016-08-21 01:16:00.212] [DEBUG] example – Time: 2016-08-20T17:16:00.212Z与之前的 [2016-08-21 00:01:24.852] [DEBUG] [default] – Time: 2016-08-20T16:01:24.852Z 唯一不同的地方就在于, [default] 变成了 example 。
那类别有什么用呢,它比级别更为灵活,为日志了提供了第二个区分的维度,例如,你可以为每个文件设置不同的 category,比如在 set-catetory.js 中:
// file: set-catetory.js
var log4js = require('log4js');
var logger = log4js.getLogger('set-catetory.js');
logger.debug("Time:", new Date());
就可以从日志 [2016-08-21 01:24:07.332] [DEBUG] set-catetory.js – Time: 2016-08-20T17:24:07.331Z 看出,这条日志来自于 set-catetory.js 文件。又或者针对不同的 node package 使用不同的 category,这样可以区分日志来源于哪个模块。
Appender
好了,现在日志有了级别和类别,解决了日志在入口处定级和分类问题,而在 log4js 中,日志的出口问题(即日志输出到哪里)就由 Appender 来解决。
默认 appender
下面是 log4js 内部默认的 appender 设置:
// log4js.js
defaultConfig = {
appenders: [{
type: "console"
}]}
可以看到,在没有对 log4js 进行任何配置的时候,默认将日志都输出到了控制台。
设置自己的 appender
我们可以通过 log4js.configure 来设置我们想要的 appender。
// file: custom-appender.js
var log4js = require('log4js');
log4js.configure({
appenders: [{
type: 'file',
filename: 'default.log'
}]})
var logger = log4js.getLogger('custom-appender');
logger.debug("Time:", new Date());
在上例中,我们将日志输出到了文件中,运行代码,log4js 在当前目录创建了一个名为 default.log 文件, [2016-08-21 08:43:21.272] [DEBUG] custom-appender – Time: 2016-08-21T00:43:21.272Z 输出到了该文件中。
log4js 提供的 appender
Console 和 File 都是 log4js 提供的 appender,除此之外还有:
DateFile:日志输出到文件,日志文件可以安特定的日期模式滚动,例如今天输出到 default-2016-08-21.log ,明天输出到 default-2016-08-22.log ;









