From 31988eb90c0f24f13e9bdbb77a91778c7809ebb3 Mon Sep 17 00:00:00 2001 From: "Endi S. Dewata" Date: Wed, 21 Jun 2017 02:16:00 +0200 Subject: Refactored Logger class. The Logger class has been modified to provide an interface to create a Logger instance that stores the log category and log source. https://pagure.io/dogtagpki/issue/2689 Change-Id: I1dadcdf35af0f0a17e02328c73ef6d95ca691e7f --- .../src/com/netscape/certsrv/logging/ILogger.java | 6 --- .../com/netscape/cmscore/logging/LogFactory.java | 6 +++ .../src/com/netscape/cmscore/logging/Logger.java | 53 +++++++++++++++++----- .../cmscore/logging/LoggerDefaultStub.java | 3 -- 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 @@ -479,15 +479,9 @@ public interface ILogger { public ILogEvent create(LogCategory evtClass, Properties prop, LogSource source, int level, 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 mFactories = new Hashtable(); + protected static Hashtable mFactories = new Hashtable(); - /** - * 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; } -- cgit