From ef69aac8b3187e040818ae95131529120ce51be2 Mon Sep 17 00:00:00 2001 From: mkoch Date: Sun, 31 Aug 2003 16:52:16 +0000 Subject: [PATCH] 2003-08-31 Ingo Proetel * 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 --- libjava/ChangeLog | 6 +++++ libjava/java/util/logging/LogManager.java | 35 +++++++++++++++++++++++--- libjava/java/util/logging/Logger.java | 34 ++++++++++++++++++++----- libjava/java/util/logging/SimpleFormatter.java | 4 ++- 4 files changed, 68 insertions(+), 11 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index d0c28f8..bed3436 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,9 @@ +2003-08-31 Ingo Proetel + + * 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 2003-08-28 Mohan Embar * win32.cc: fixed tab, indentation and whitespace diff --git a/libjava/java/util/logging/LogManager.java b/libjava/java/util/logging/LogManager.java index d6536e7..83379bb 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 e142e20..3c19478 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 8a95638..aece9d4 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()); -- 2.7.4