diff options
4 files changed, 47 insertions, 21 deletions
diff --git a/base/common/src/com/netscape/certsrv/logging/ILogger.java b/base/common/src/com/netscape/certsrv/logging/ILogger.java index f3e365f95..56298bd3d 100644 --- a/base/common/src/com/netscape/certsrv/logging/ILogger.java +++ b/base/common/src/com/netscape/certsrv/logging/ILogger.java @@ -480,14 +480,8 @@ public interface ILogger { String msg, Object params[], boolean multiline); /** - * Register a log event factory. Which will create the desired ILogEvents. - */ - public void register(LogCategory evtClass, ILogEventFactory f); - - /** * Retrieves the associated log queue. The log queue is where issued log events * are collected for later processing. */ public ILogQueue getLogQueue(); - } diff --git a/base/server/cmscore/src/com/netscape/cmscore/logging/LogFactory.java b/base/server/cmscore/src/com/netscape/cmscore/logging/LogFactory.java index 3d76c74b8..855acf981 100644 --- a/base/server/cmscore/src/com/netscape/cmscore/logging/LogFactory.java +++ b/base/server/cmscore/src/com/netscape/cmscore/logging/LogFactory.java @@ -22,6 +22,8 @@ import java.util.Properties; import com.netscape.certsrv.logging.IBundleLogEvent; import com.netscape.certsrv.logging.ILogEvent; import com.netscape.certsrv.logging.ILogEventFactory; +import com.netscape.certsrv.logging.LogCategory; +import com.netscape.certsrv.logging.LogSource; public abstract class LogFactory implements ILogEventFactory { @@ -30,6 +32,10 @@ public abstract class LogFactory implements ILogEventFactory { public LogFactory() { } + public Logger createLogger(LogCategory category, LogSource source) { + return new Logger(this, category, source); + } + /** * Set the resource bundle of the log event. * diff --git a/base/server/cmscore/src/com/netscape/cmscore/logging/Logger.java b/base/server/cmscore/src/com/netscape/cmscore/logging/Logger.java index 38cf95c56..4b47a8712 100644 --- a/base/server/cmscore/src/com/netscape/cmscore/logging/Logger.java +++ b/base/server/cmscore/src/com/netscape/cmscore/logging/Logger.java @@ -21,7 +21,6 @@ import java.util.Hashtable; import java.util.Properties; import com.netscape.certsrv.logging.ILogEvent; -import com.netscape.certsrv.logging.ILogEventFactory; import com.netscape.certsrv.logging.ILogQueue; import com.netscape.certsrv.logging.ILogger; import com.netscape.certsrv.logging.LogCategory; @@ -40,19 +39,27 @@ public class Logger implements ILogger { protected static Logger mLogger = new Logger(); protected ILogQueue mLogQueue = LogQueue.getLogQueue(); - protected Hashtable<LogCategory, ILogEventFactory> mFactories = new Hashtable<LogCategory, ILogEventFactory>(); + protected static Hashtable<LogCategory, LogFactory> mFactories = new Hashtable<LogCategory, LogFactory>(); - /** - * Constructs a generic logger, and registers a list - * of resident event factories. - */ - public Logger() { - // register standard event factories + static { register(EV_AUDIT, new AuditEventFactory()); register(EV_SYSTEM, new SystemEventFactory()); register(EV_SIGNED_AUDIT, new SignedAuditEventFactory()); } + LogFactory factory; + LogCategory category; + LogSource source; + + public Logger() { + } + + public Logger(LogFactory factory, LogCategory category, LogSource source) { + this.factory = factory; + this.category = category; + this.source = source; + } + /** * get default single global logger */ @@ -60,6 +67,17 @@ public class Logger implements ILogger { return mLogger; } + public static Logger getLogger(LogCategory category, LogSource source) { + + LogFactory factory = mFactories.get(category); + + if (factory == null) { + throw new RuntimeException("Unknown logger category: " + category); + } + + return factory.createLogger(category, source); + } + /** * Retrieves the associated log queue. */ @@ -73,7 +91,7 @@ public class Logger implements ILogger { * @param evtClass the event class name: ILogger.EV_SYSTEM or ILogger.EV_AUDIT * @param f the event factory name */ - public void register(LogCategory evtClass, ILogEventFactory f) { + public static void register(LogCategory evtClass, LogFactory f) { mFactories.put(evtClass, f); } @@ -103,6 +121,10 @@ public class Logger implements ILogger { //************** no param **************** + public void log(int level, String msg) { + log(category, null, source, level, msg); + } + /** * Logs an event to the log queue. * @@ -351,6 +373,10 @@ public class Logger implements ILogger { //******************** end multiline log ************************* + public ILogEvent create(int level, String msg, Object params[], boolean multiline) { + return create(category, null, source, level, msg, params, multiline); + } + /** * Creates generic log event. If required, we can recycle * events here. @@ -358,10 +384,13 @@ public class Logger implements ILogger { //XXXXXXXXXXX prop is out dated!!!! XXXXXXXXXXXXXXX public ILogEvent create(LogCategory evtClass, Properties prop, LogSource source, int level, String msg, Object params[], boolean multiline) { - ILogEventFactory f = mFactories.get(evtClass); - if (f == null) - return null; + LogFactory f = factory == null ? mFactories.get(evtClass) : factory; + + if (f == null) { + throw new RuntimeException("Unknown logger category: " + evtClass); + } + return f.create(evtClass, prop, source, level, multiline, msg, params); } diff --git a/base/server/test/com/netscape/cmscore/logging/LoggerDefaultStub.java b/base/server/test/com/netscape/cmscore/logging/LoggerDefaultStub.java index 0e6b7673c..430a45ce1 100644 --- a/base/server/test/com/netscape/cmscore/logging/LoggerDefaultStub.java +++ b/base/server/test/com/netscape/cmscore/logging/LoggerDefaultStub.java @@ -69,9 +69,6 @@ public class LoggerDefaultStub implements ILogger { return null; } - public void register(LogCategory evtClass, ILogEventFactory f) { - } - public ILogQueue getLogQueue() { return null; } |