From: zapata Date: Thu, 12 Dec 2002 14:45:14 +0000 (+0000) Subject: made the log4j LoggerImpl thread-safe X-Git-Tag: BEFORE_MERGE_1_1~407 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=6a136be84d75c1113fef475215172d7c628cc598;p=mir.git made the log4j LoggerImpl thread-safe --- diff --git a/source/mir/log/log4j/LoggerImpl.java b/source/mir/log/log4j/LoggerImpl.java index d821f5cc..e275e09c 100755 --- a/source/mir/log/log4j/LoggerImpl.java +++ b/source/mir/log/log4j/LoggerImpl.java @@ -1,63 +1,70 @@ -package mir.log.log4j; - -import org.apache.log4j.PropertyConfigurator; -import org.apache.log4j.Logger; - -import java.util.Map; -import java.util.HashMap; - -import mir.misc.MirConfig; - - -public class LoggerImpl implements mir.log.Logger { - - private static Map loggers = new HashMap(); - - public LoggerImpl() { - System.setProperty("log.home", MirConfig.getPropWithHome("Log.Home")); - PropertyConfigurator.configure(MirConfig.getPropWithHome("Log.log4j.ConfigurationFile").trim()); - } - - - public void debug( Object o, String s ) { - this.getLogger(o).debug(s); - } - - public void info( Object o, String s ) { - this.getLogger(o).info(s); - } - - public void warn( Object o, String s ) { - this.getLogger(o).warn(s); - } - - public void error( Object o, String s ) { - this.getLogger(o).error(s); - } - - public void fatal( Object o, String s ) { - this.getLogger(o).fatal(s); - } - - - private Logger getLogger( Object o ) { - String name; - - if (o instanceof String) { - name = (String) o; - } else if (o instanceof Class) { - name = ((Class)o).getName(); - } else if (o!=null) { - name = o.getClass().getName(); - } else { - name = "generic"; - } - - Logger l = (Logger)loggers.get(name); - if (l==null) { - l = Logger.getLogger(name); - loggers.put(name, l); - } - return l; - } +package mir.log.log4j; + +import org.apache.log4j.PropertyConfigurator; +import org.apache.log4j.Logger; + +import java.util.Map; +import java.util.HashMap; + +import mir.misc.MirConfig; + +public class LoggerImpl implements mir.log.Logger { + private static Map loggers = new HashMap(); + + public LoggerImpl() { + System.setProperty("log.home", MirConfig.getPropWithHome("Log.Home")); + PropertyConfigurator.configure(MirConfig.getPropWithHome( + "Log.log4j.ConfigurationFile").trim()); + } + + public void debug(Object o, String s) { + this.getLogger(o).debug(s); + } + + public void info(Object o, String s) { + this.getLogger(o).info(s); + } + + public void warn(Object o, String s) { + this.getLogger(o).warn(s); + } + + public void error(Object o, String s) { + this.getLogger(o).error(s); + } + + public void fatal(Object o, String s) { + this.getLogger(o).fatal(s); + } + + private Logger getLogger(Object o) { + String name; + Logger l; + + if (o instanceof String) { + name = (String) o; + } + else if (o instanceof Class) { + name = ( (Class) o).getName(); + } + else if (o != null) { + name = o.getClass().getName(); + } + else { + name = "generic"; + } + + synchronized (loggers) { + l = (Logger) loggers.get(name); + if (l == null) { + if (!loggers.containsKey(name)) { + l = Logger.getLogger(name); + loggers.put(name, l); + } + l = (Logger) loggers.get(name); + } + } + + return l; + } } \ No newline at end of file