log4moz api change: Log4Moz.Service is gone. There is now a Log4Moz.repository which will auto-instantiate to a LoggerRepository (but can also be set if one wishes to use a different one). Also includes some other minor changes, e.g. formatters are now optional (and default to a BasicFormatter if not provided)

This commit is contained in:
Dan Mills 2008-11-03 14:48:53 -08:00
Родитель 039bc89a8c
Коммит e7ff943d3a
1 изменённых файлов: 50 добавлений и 45 удалений

Просмотреть файл

@ -80,14 +80,23 @@ let Log4Moz = {
}
},
get Service() {
delete Log4Moz.Service;
Log4Moz.Service = new Log4MozService();
return Log4Moz.Service;
get repository() {
delete Log4Moz.repository;
Log4Moz.repository = new LoggerRepository();
return Log4Moz.repository;
},
set repository(value) {
delete Log4Moz.repository;
Log4Moz.repository = value;
},
get LogMessage() { return LogMessage; },
get Logger() { return Logger; },
get LoggerRepository() { return LoggerRepository; },
get Formatter() { return Formatter; },
get BasicFormatter() { return BasicFormatter; },
get Appender() { return Appender; },
get DumpAppender() { return DumpAppender; },
get ConsoleAppender() { return ConsoleAppender; },
@ -95,9 +104,9 @@ let Log4Moz = {
get RotatingFileAppender() { return RotatingFileAppender; },
// Logging helper:
// let logger = Log4Moz.Service.getLogger("foo");
// let logger = Log4Moz.repository.getLogger("foo");
// logger.info(Log4Moz.enumerateInterfaces(someObject).join(","));
enumerateInterfaces: function(aObject) {
enumerateInterfaces: function Log4Moz_enumerateInterfaces(aObject) {
let interfaces = [];
for (i in Ci) {
@ -112,9 +121,10 @@ let Log4Moz = {
},
// Logging helper:
// let logger = Log4Moz.Service.getLogger("foo");
// let logger = Log4Moz.repository.getLogger("foo");
// logger.info(Log4Moz.enumerateProperties(someObject).join(","));
enumerateProperties: function(aObject, aExcludeComplexTypes) {
enumerateProperties: function Log4Moz_enumerateProps(aObject,
aExcludeComplexTypes) {
let properties = [];
for (p in aObject) {
@ -165,15 +175,25 @@ LogMessage.prototype = {
*/
function Logger(name, repository) {
this._name = name;
this._repository = repository;
this._appenders = [];
this._init(name, repository);
}
Logger.prototype = {
_init: function Logger__init(name, repository) {
if (!repository)
repository = Log4Moz.repository;
this._name = name;
this._appenders = [];
this._repository = repository;
},
QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports]),
parent: null,
get name() {
return this._name;
},
_level: null,
get level() {
if (this._level != null)
@ -286,10 +306,12 @@ LoggerRepository.prototype = {
},
getLogger: function LogRep_getLogger(name) {
if (!(name in this._loggers)) {
this._loggers[name] = new Logger(name, this);
this._updateParents(name);
}
if (!name)
name = this.getLogger.caller.name;
if (name in this._loggers)
return this._loggers[name];
this._loggers[name] = new Logger(name, this);
this._updateParents(name);
return this._loggers[name];
}
};
@ -313,6 +335,8 @@ function BasicFormatter(dateFormat) {
this.dateFormat = dateFormat;
}
BasicFormatter.prototype = {
__proto__: Formatter.prototype,
_dateFormat: null,
get dateFormat() {
@ -332,7 +356,6 @@ BasicFormatter.prototype = {
message.message + "\n";
}
};
BasicFormatter.prototype.__proto__ = new Formatter();
/*
* Appenders
@ -369,14 +392,15 @@ Appender.prototype = {
function DumpAppender(formatter) {
this._name = "DumpAppender";
this._formatter = formatter;
this._formatter = formatter? formatter : new BasicFormatter();
}
DumpAppender.prototype = {
__proto__: Appender.prototype,
doAppend: function DApp_doAppend(message) {
dump(message);
}
};
DumpAppender.prototype.__proto__ = new Appender();
/*
* ConsoleAppender
@ -388,6 +412,8 @@ function ConsoleAppender(formatter) {
this._formatter = formatter;
}
ConsoleAppender.prototype = {
__proto__: Appender.prototype,
doAppend: function CApp_doAppend(message) {
if (message.level > Log4Moz.Level.Warn) {
Cu.reportError(message);
@ -397,7 +423,6 @@ ConsoleAppender.prototype = {
getService(Ci.nsIConsoleService).logStringMessage(message);
}
};
ConsoleAppender.prototype.__proto__ = new Appender();
/*
* FileAppender
@ -407,9 +432,11 @@ ConsoleAppender.prototype.__proto__ = new Appender();
function FileAppender(file, formatter) {
this._name = "FileAppender";
this._file = file; // nsIFile
this._formatter = formatter;
this._formatter = formatter? formatter : new BasicFormatter();
}
FileAppender.prototype = {
__proto__: Appender.prototype,
__fos: null,
get _fos() {
if (!this.__fos)
@ -450,7 +477,6 @@ FileAppender.prototype = {
this._file.remove(false);
}
};
FileAppender.prototype.__proto__ = new Appender();
/*
* RotatingFileAppender
@ -466,11 +492,13 @@ function RotatingFileAppender(file, formatter, maxSize, maxBackups) {
this._name = "RotatingFileAppender";
this._file = file; // nsIFile
this._formatter = formatter;
this._formatter = formatter? formatter : new BasicFormatter();
this._maxSize = maxSize;
this._maxBackups = maxBackups;
}
RotatingFileAppender.prototype = {
__proto__: FileAppender.prototype,
doAppend: function RFApp_doAppend(message) {
if (message === null || message.length <= 0)
return;
@ -502,26 +530,3 @@ RotatingFileAppender.prototype = {
// Note: this._file still points to the same file
}
};
RotatingFileAppender.prototype.__proto__ = new FileAppender();
/*
* LoggingService
*/
function Log4MozService() {
this._repository = new LoggerRepository();
}
Log4MozService.prototype = {
//classDescription: "Log4moz Logging Service",
//contractID: "@mozilla.org/log4moz/service;1",
//classID: Components.ID("{a60e50d7-90b8-4a12-ad0c-79e6a1896978}"),
QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports]),
get rootLogger() {
return this._repository.rootLogger;
},
getLogger: function LogSvc_getLogger(name) {
return this._repository.getLogger(name);
}
};