diff options
author | mkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-08-31 16:52:16 +0000 |
---|---|---|
committer | mkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-08-31 16:52:16 +0000 |
commit | ef69aac8b3187e040818ae95131529120ce51be2 (patch) | |
tree | 4cef7ba67443936ec02bcbb5538c6a5f2826c8ab /libjava/java/util | |
parent | dc0fc022d9780c224e8369d9a71344102ee7425d (diff) | |
download | gcc-ef69aac8b3187e040818ae95131529120ce51be2.tar.gz |
2003-08-31 Ingo Proetel <proetel@aicas.com>
* java/util/logging/Logger.java: provide class and method information
* java/util/logging/LogManager.java: create handlers
* java/util/logging/SimpleFormatter.java: print souceClassName and
sourceMethodName
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70960 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/util')
-rw-r--r-- | libjava/java/util/logging/LogManager.java | 35 | ||||
-rw-r--r-- | libjava/java/util/logging/Logger.java | 34 | ||||
-rw-r--r-- | libjava/java/util/logging/SimpleFormatter.java | 4 |
3 files changed, 62 insertions, 11 deletions
diff --git a/libjava/java/util/logging/LogManager.java b/libjava/java/util/logging/LogManager.java index d6536e71d1c..83379bb4942 100644 --- a/libjava/java/util/logging/LogManager.java +++ b/libjava/java/util/logging/LogManager.java @@ -52,6 +52,7 @@ import java.util.Properties; import java.util.Enumeration; import java.util.Iterator; import java.util.Map; +import java.util.StringTokenizer; import java.lang.ref.WeakReference; /** @@ -167,6 +168,7 @@ public class LogManager * the order in which classes are initialized. */ Logger.getLogger("global").setParent(rootLogger); + Logger.getLogger("global").setUseParentHandlers(true); } @@ -520,7 +522,7 @@ public class LogManager public synchronized void readConfiguration(InputStream inputStream) throws IOException, SecurityException - { + { Properties newProperties; Enumeration keys; @@ -532,12 +534,36 @@ public class LogManager while (keys.hasMoreElements()) { - String key = (String) keys.nextElement(); + String key = ((String) keys.nextElement()).trim(); String value = newProperties.getProperty(key); - + if (value == null) continue; - + + value = value.trim(); + + if("handlers".equals(key)) + { + StringTokenizer tokenizer = new StringTokenizer(value); + while(tokenizer.hasMoreTokens()) + { + String handlerName = tokenizer.nextToken(); + try + { + Class handlerClass = Class.forName(handlerName); + getLogger("").addHandler((Handler)handlerClass.newInstance()); + } + catch (ClassCastException ex) + { + System.err.println("[LogManager] class " + handlerName + " is not subclass of java.util.logging.Handler"); + } + catch (Exception ex) + { + //System.out.println("[LogManager.readConfiguration]"+ex); + } + } + } + if (key.endsWith(".level")) { String loggerName = key.substring(0, key.length() - 6); @@ -550,6 +576,7 @@ public class LogManager } catch (Exception _) { + //System.out.println("[LogManager.readConfiguration] "+_); } continue; } diff --git a/libjava/java/util/logging/Logger.java b/libjava/java/util/logging/Logger.java index e142e201f70..3c194785c5f 100644 --- a/libjava/java/util/logging/Logger.java +++ b/libjava/java/util/logging/Logger.java @@ -589,9 +589,10 @@ public class Logger String message, Object param) { + StackTraceElement caller = getCallerStackFrame(); logp(level, - /* sourceClass*/ null, - /* sourceMethod */ null, + caller.getClassName(), + caller.getMethodName(), message, param); } @@ -601,9 +602,10 @@ public class Logger String message, Object[] params) { + StackTraceElement caller = getCallerStackFrame(); logp(level, - /* sourceClass*/ null, - /* sourceMethod */ null, + caller.getClassName(), + caller.getMethodName(), message, params); } @@ -613,9 +615,10 @@ public class Logger String message, Throwable thrown) { + StackTraceElement caller = getCallerStackFrame(); logp(level, - /* sourceClass*/ null, - /* sourceMethod */ null, + caller.getClassName(), + caller.getMethodName(), message, thrown); } @@ -1164,4 +1167,23 @@ public class Logger this.parent = parent; } + + /** + * Gets the StackTraceElement of the first class that is not this class. + * That should be the initial caller of a logging method. + * @return caller of the initial looging method + */ + private StackTraceElement getCallerStackFrame() + { + Throwable t = new Throwable(); + StackTraceElement[] stackTrace = t.getStackTrace(); + int index = 0; + // skip to stackentries until this class + while(!stackTrace[index].getClassName().equals(getClass().getName())){index++;} + // skip the stackentries of this class + while(stackTrace[index].getClassName().equals(getClass().getName())){index++;} + + return stackTrace[index]; + } + } diff --git a/libjava/java/util/logging/SimpleFormatter.java b/libjava/java/util/logging/SimpleFormatter.java index 8a95638b7b8..aece9d40596 100644 --- a/libjava/java/util/logging/SimpleFormatter.java +++ b/libjava/java/util/logging/SimpleFormatter.java @@ -106,7 +106,9 @@ public class SimpleFormatter buf.append(dateFormat.format(new Date(record.getMillis()))); buf.append(' '); - buf.append(record.getLoggerName()); + buf.append(record.getSourceClassName()); + buf.append(' '); + buf.append(record.getSourceMethodName()); buf.append(lineSep); buf.append(record.getLevel()); |