From 55eaea1974a59f7b93c4e6a915ba27784e0c6c91 Mon Sep 17 00:00:00 2001 From: mdb Date: Thu, 7 Dec 2000 06:13:59 +0000 Subject: [PATCH] Added the facilities for logging a stack trace. git-svn-id: https://samskivert.googlecode.com/svn/trunk@25 6335cc39-0255-0410-8fd6-9bcaacd3b74c --- .../com/samskivert/util/DefaultLogProvider.java | 15 ++++++++++++++- .../src/java/com/samskivert/util/Log.java | 12 +++++++++++- .../src/java/com/samskivert/util/LogProvider.java | 9 ++++++++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/projects/samskivert/src/java/com/samskivert/util/DefaultLogProvider.java b/projects/samskivert/src/java/com/samskivert/util/DefaultLogProvider.java index caee4eec..8a6a6409 100644 --- a/projects/samskivert/src/java/com/samskivert/util/DefaultLogProvider.java +++ b/projects/samskivert/src/java/com/samskivert/util/DefaultLogProvider.java @@ -1,5 +1,5 @@ // -// $Id: DefaultLogProvider.java,v 1.1 2000/12/06 03:21:59 mdb Exp $ +// $Id: DefaultLogProvider.java,v 1.2 2000/12/07 06:13:59 mdb Exp $ package com.samskivert.util; @@ -9,6 +9,9 @@ import java.util.Hashtable; * If no log provider is registered with the log services, the default * provider will be used. The default provider simple logs messages to * System.err and manages log levels in a simplistic way. + * + * @see Log + * @see LogProvider */ public class DefaultLogProvider implements LogProvider { @@ -21,6 +24,16 @@ public class DefaultLogProvider implements LogProvider } } + public void logStackTrace (int level, String moduleName, Throwable t) + { + Integer tlevel = (Integer)_levels.get(moduleName); + if ((tlevel != null && level >= tlevel.intValue()) || + (level >= _level)) { + System.err.println(moduleName + ": " + t.getMessage()); + t.printStackTrace(System.err); + } + } + public void setLevel (String moduleName, int level) { _levels.put(moduleName, new Integer(level)); diff --git a/projects/samskivert/src/java/com/samskivert/util/Log.java b/projects/samskivert/src/java/com/samskivert/util/Log.java index 66a9dd66..14223d27 100644 --- a/projects/samskivert/src/java/com/samskivert/util/Log.java +++ b/projects/samskivert/src/java/com/samskivert/util/Log.java @@ -1,5 +1,5 @@ // -// $Id: Log.java,v 1.2 2000/12/06 03:21:59 mdb Exp $ +// $Id: Log.java,v 1.3 2000/12/07 06:13:59 mdb Exp $ package com.samskivert.util; @@ -57,6 +57,16 @@ public final class Log _provider.log(WARNING, _moduleName, message); } + /** + * Logs the stack trace of the supplied throwable at the specified + * level (if the current log level for this module is at or below the + * specified level). + */ + public void logStackTrace (int level, Throwable t) + { + _provider.logStackTrace(level, _moduleName, t); + } + /** * Sets the log level of the specified module to the specified * value. The log level indicates which messages are logged and which diff --git a/projects/samskivert/src/java/com/samskivert/util/LogProvider.java b/projects/samskivert/src/java/com/samskivert/util/LogProvider.java index d9a33906..abd58988 100644 --- a/projects/samskivert/src/java/com/samskivert/util/LogProvider.java +++ b/projects/samskivert/src/java/com/samskivert/util/LogProvider.java @@ -1,5 +1,5 @@ // -// $Id: LogProvider.java,v 1.1 2000/12/06 00:24:46 mdb Exp $ +// $Id: LogProvider.java,v 1.2 2000/12/07 06:13:59 mdb Exp $ package com.samskivert.util; @@ -16,6 +16,13 @@ public interface LogProvider */ public void log (int level, String moduleName, String message); + /** + * Log the stack trace of the supplied throwable at the specified + * level for the specified module, if messages are enabled for that + * particular combination. + */ + public void logStackTrace (int level, String moduleName, Throwable t); + /** * Set the log level for the specified module to the specified * level. The log services assume that all messages at or higher than