|
|
|
@ -184,6 +184,10 @@ var appenderMakers = {
|
|
|
|
|
layout = layoutMakers[config.layout.type](config.layout);
|
|
|
|
|
}
|
|
|
|
|
return consoleAppender(layout);
|
|
|
|
|
},
|
|
|
|
|
"logLevelFilter": function(config) {
|
|
|
|
|
var appender = appenderMakers[config.appender.type](config.appender);
|
|
|
|
|
return logLevelFilter(config.level, appender);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -196,15 +200,20 @@ var layoutMakers = {
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
function configureAppender(appenderConfig) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function configureAppenders(appenderList) {
|
|
|
|
|
log4js.clearAppenders();
|
|
|
|
|
if (appenderList) {
|
|
|
|
|
appenderList.forEach(
|
|
|
|
|
function(appenderConfig) {
|
|
|
|
|
var appender = appenderMakers[appenderConfig.type](appenderConfig);
|
|
|
|
|
log4js.addAppender(appender, appenderConfig.category);
|
|
|
|
|
appenderList.forEach(function(appenderConfig) {
|
|
|
|
|
var appender = appenderMakers[appenderConfig.type](appenderConfig);
|
|
|
|
|
if (appender) {
|
|
|
|
|
log4js.addAppender(appender, appenderConfig.category);
|
|
|
|
|
} else {
|
|
|
|
|
throw new Error("log4js configuration problem for "+sys.inspect(appenderConfig));
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
log4js.addAppender(consoleAppender);
|
|
|
|
|
}
|
|
|
|
@ -263,6 +272,10 @@ Level.prototype.isLessThanOrEqualTo = function(otherLevel) {
|
|
|
|
|
return this.level <= otherLevel.level;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Level.prototype.isGreaterThanOrEqualTo = function(otherLevel) {
|
|
|
|
|
return this.level >= otherLevel.level;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Models a logging event.
|
|
|
|
|
* @constructor
|
|
|
|
@ -369,15 +382,9 @@ consoleAppender = function (layout) {
|
|
|
|
|
fileAppender = function(file, layout) {
|
|
|
|
|
layout = layout || basicLayout;
|
|
|
|
|
file = file || "log4js.log";
|
|
|
|
|
var logFile;
|
|
|
|
|
//waits are generally bad, but we need
|
|
|
|
|
//the file to be open before we start doing any writing.
|
|
|
|
|
posix
|
|
|
|
|
.open(file, process.O_APPEND | process.O_WRONLY | process.O_CREAT, 0644)
|
|
|
|
|
.addCallback(function(fileDescriptor) { logFile = fileDescriptor; })
|
|
|
|
|
.addErrback(function(err) { throw new Error("Could not open logfile "+file+", error was: "+sys.inspect(err)); })
|
|
|
|
|
.wait();
|
|
|
|
|
|
|
|
|
|
var logFile = posix.open(file, process.O_APPEND | process.O_WRONLY | process.O_CREAT, 0644).wait();
|
|
|
|
|
//register ourselves as listeners for shutdown
|
|
|
|
|
//so that we can close the file.
|
|
|
|
|
//not entirely sure this is necessary, but still.
|
|
|
|
@ -388,6 +395,15 @@ fileAppender = function(file, layout) {
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
logLevelFilter = function(levelString, appender) {
|
|
|
|
|
var level = Level.toLevel(levelString);
|
|
|
|
|
return function(logEvent) {
|
|
|
|
|
if (logEvent.level.isGreaterThanOrEqualTo(level)) {
|
|
|
|
|
appender(logEvent);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* BasicLayout is a simple layout for storing the logs. The logs are stored
|
|
|
|
|
* in following format:
|
|
|
|
@ -596,6 +612,7 @@ Date.prototype.toFormattedString = function(format) {
|
|
|
|
|
|
|
|
|
|
log4js.consoleAppender = consoleAppender;
|
|
|
|
|
log4js.fileAppender = fileAppender;
|
|
|
|
|
log4js.logLevelFilter = logLevelFilter;
|
|
|
|
|
log4js.basicLayout = basicLayout;
|
|
|
|
|
log4js.patternLayout = patternLayout;
|
|
|
|
|
log4js.messagePassThroughLayout = messagePassThroughLayout;
|
|
|
|
|