cvs commit: jakarta-tomcat-connectors/juli/src/java/org/apache/juli ClassLoaderLogManager.java

2005-04-27 Thread remm
remm2005/04/27 14:54:01

  Modified:juli/src/java/org/apache/juli ClassLoaderLogManager.java
  Log:
  - Rather large change to support better the core configuration file loading.
  
  Revision  ChangesPath
  1.10  +193 -118  
jakarta-tomcat-connectors/juli/src/java/org/apache/juli/ClassLoaderLogManager.java
  
  Index: ClassLoaderLogManager.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/juli/src/java/org/apache/juli/ClassLoaderLogManager.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ClassLoaderLogManager.java22 Mar 2005 10:29:47 -  1.9
  +++ ClassLoaderLogManager.java27 Apr 2005 21:54:01 -  1.10
  @@ -16,6 +16,8 @@
   
   package org.apache.juli;
   
  +import java.io.File;
  +import java.io.FileInputStream;
   import java.io.IOException;
   import java.io.InputStream;
   import java.net.URLClassLoader;
  @@ -73,14 +75,10 @@
   
   ClassLoader classLoader = 
   Thread.currentThread().getContextClassLoader();
  -if (classLoader == null || (global.equals(loggerName))) {
  -return super.addLogger(logger);
  -}
   ClassLoaderLogInfo info = getClassLoaderInfo(classLoader);
   if (info.loggers.containsKey(loggerName)) {
   return false;
   }
  -
   info.loggers.put(loggerName, logger);
   
   // Apply initial level for new logger
  @@ -171,13 +169,9 @@
* @param name The name of the logger to retrieve
*/
   public synchronized Logger getLogger(final String name) {
  -final ClassLoader classLoader = Thread.currentThread()
  +ClassLoader classLoader = Thread.currentThread()
   .getContextClassLoader();
  -if (classLoader == null || (global.equals(name))) {
  -return super.getLogger(name);
  -}
  -final Map loggers = getClassLoaderInfo(classLoader).loggers;
  -return (Logger) loggers.get(name);
  +return (Logger) getClassLoaderInfo(classLoader).loggers.get(name);
   }
   
   
  @@ -186,13 +180,9 @@
* classloader local configuration.
*/
   public synchronized Enumeration getLoggerNames() {
  -final ClassLoader classLoader = Thread.currentThread()
  +ClassLoader classLoader = Thread.currentThread()
   .getContextClassLoader();
  -if (classLoader == null) {
  -return super.getLoggerNames();
  -}
  -final Map loggers = getClassLoaderInfo(classLoader).loggers;
  -return Collections.enumeration(loggers.keySet());
  +return 
Collections.enumeration(getClassLoaderInfo(classLoader).loggers.keySet());
   }
   
   
  @@ -203,11 +193,8 @@
* @param name The property name
*/
   public String getProperty(String name) {
  -final ClassLoader classLoader = Thread.currentThread()
  +ClassLoader classLoader = Thread.currentThread()
   .getContextClassLoader();
  -if (classLoader == null) {
  -return super.getProperty(name);
  -}
   String prefix = (String) this.prefix.get();
   if (prefix != null) {
   name = prefix + name;
  @@ -235,22 +222,31 @@
   }
   // Simple property replacement (mostly for folder names)
   if (result != null) {
  -result = result.trim();
  -if (result.startsWith(${)) {
  -int pos = result.indexOf('}');
  -if (pos != -1) {
  -String propName = result.substring(2, pos);
  -String replacement = System.getProperty(propName);
  -if (replacement != null) {
  -result = replacement + result.substring(pos + 1);
  -}
  -}
  -}
  +result = replace(result);
   }
   return result;
   }
   
   
  +public void readConfiguration()
  +throws IOException, SecurityException {
  +
  +checkAccess();
  +
  +readConfiguration(Thread.currentThread().getContextClassLoader());
  +
  +}
  +
  +public void readConfiguration(InputStream is)
  +throws IOException, SecurityException {
  +
  +checkAccess();
  +reset();
  +
  +readConfiguration(is, 
Thread.currentThread().getContextClassLoader());
  +
  +}
  +
   // -- Protected 
Methods
   
   
  @@ -261,108 +257,165 @@
* @param classLoader The classloader for which we will retrieve or 
build the 
*configuration
*/
  -protected ClassLoaderLogInfo getClassLoaderInfo(final ClassLoader 
classLoader) {
  +protected 

cvs commit: jakarta-tomcat-connectors/juli/src/java/org/apache/juli ClassLoaderLogManager.java

2005-03-22 Thread remm
remm2005/03/22 02:29:47

  Modified:juli/src/java/org/apache/juli ClassLoaderLogManager.java
  Log:
  - Add some better logging for the critical errors. To avoid possible 
problems, this is logged to the standard streams, rather than to another logger.
  
  Revision  ChangesPath
  1.9   +9 -6  
jakarta-tomcat-connectors/juli/src/java/org/apache/juli/ClassLoaderLogManager.java
  
  Index: ClassLoaderLogManager.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/juli/src/java/org/apache/juli/ClassLoaderLogManager.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ClassLoaderLogManager.java7 Mar 2005 13:26:59 -   1.8
  +++ ClassLoaderLogManager.java22 Mar 2005 10:29:47 -  1.9
  @@ -250,7 +250,7 @@
   return result;
   }
   
  -
  +
   // -- Protected 
Methods
   
   
  @@ -295,7 +295,8 @@
   try {
   info.props.load(is);
   } catch (IOException e) {
  -// FIXME: Report this using the main logger ?
  +// Report error
  +System.err.println(Configuration error);
   e.printStackTrace();
   } finally {
   try {
  @@ -337,7 +338,8 @@
   localRootLogger.addHandler(handler);
   }
   } catch (Exception e) {
  -// FIXME: Report this using the main logger ?
  +// Report error
  +System.err.println(Handler error);
   e.printStackTrace();
   }
   }
  @@ -378,7 +380,7 @@
   });
   }
   
  -
  +
   //  LogNode Inner 
Class
   
   
  @@ -447,6 +449,7 @@
   
   }
   
  +
   //  ClassLoaderInfo Inner 
Class
   
   
  @@ -461,7 +464,7 @@
   }
   
   }
  -
  +
   
   // - RootLogger Inner 
Class
   
  @@ -476,5 +479,5 @@
   }
   }
   
  -
  +
   }
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-tomcat-connectors/juli/src/java/org/apache/juli ClassLoaderLogManager.java

2005-03-07 Thread remm
remm2005/03/07 05:26:59

  Modified:juli/src/java/org/apache/juli ClassLoaderLogManager.java
  Log:
  - private - protected.
  
  Revision  ChangesPath
  1.8   +11 -11
jakarta-tomcat-connectors/juli/src/java/org/apache/juli/ClassLoaderLogManager.java
  
  Index: ClassLoaderLogManager.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/juli/src/java/org/apache/juli/ClassLoaderLogManager.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ClassLoaderLogManager.java4 Mar 2005 15:33:41 -   1.7
  +++ ClassLoaderLogManager.java7 Mar 2005 13:26:59 -   1.8
  @@ -38,7 +38,7 @@
   /**
* Per classloader LogManager implementation.
*/
  -public final class ClassLoaderLogManager extends LogManager {
  +public class ClassLoaderLogManager extends LogManager {
   
   
   // -- 
Variables
  @@ -49,14 +49,14 @@
* weak hashmap is used to ensure no classloader reference is leaked 
from 
* application redeployment.
*/
  -private final Map classLoaderLoggers = new WeakHashMap();
  +protected final Map classLoaderLoggers = new WeakHashMap();
   
   
   /**
* This prefix is used to allow using prefixes for the properties names
* of handlers and their subcomponents.
*/
  -private ThreadLocal prefix = new ThreadLocal();
  +protected ThreadLocal prefix = new ThreadLocal();
   
   
   // - Public 
Methods
  @@ -251,7 +251,7 @@
   }
   
   
  -//  Private 
Methods
  +// -- Protected 
Methods
   
   
   /**
  @@ -261,7 +261,7 @@
* @param classLoader The classloader for which we will retrieve or 
build the 
*configuration
*/
  -private ClassLoaderLogInfo getClassLoaderInfo(final ClassLoader 
classLoader) {
  +protected ClassLoaderLogInfo getClassLoaderInfo(final ClassLoader 
classLoader) {
   
   ClassLoaderLogInfo info = (ClassLoaderLogInfo) classLoaderLoggers
   .get(classLoader);
  @@ -368,7 +368,7 @@
* @param logger
* @param parent
*/
  -private static void doSetParentLogger(final Logger logger,
  +protected static void doSetParentLogger(final Logger logger,
   final Logger parent) {
   AccessController.doPrivileged(new PrivilegedAction() {
   public Object run() {
  @@ -382,12 +382,12 @@
   //  LogNode Inner 
Class
   
   
  -private static final class LogNode {
  +protected static final class LogNode {
   Logger logger;
   
  -private final Map children = new HashMap();
  +protected final Map children = new HashMap();
   
  -private final LogNode parent;
  +protected final LogNode parent;
   
   LogNode(final LogNode parent, final Logger logger) {
   this.parent = parent;
  @@ -450,7 +450,7 @@
   //  ClassLoaderInfo Inner 
Class
   
   
  -private static final class ClassLoaderLogInfo {
  +protected static final class ClassLoaderLogInfo {
   final LogNode rootNode;
   final Map loggers = new HashMap();
   final Map handlers = new HashMap();
  @@ -470,7 +470,7 @@
* This class is needed to instantiate the root of each per classloader 
* hierarchy.
*/
  -private class RootLogger extends Logger {
  +protected class RootLogger extends Logger {
   public RootLogger() {
   super(, null);
   }
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-tomcat-connectors/juli/src/java/org/apache/juli ClassLoaderLogManager.java

2005-03-04 Thread remm
remm2005/03/04 06:59:19

  Modified:juli/src/java/org/apache/juli ClassLoaderLogManager.java
  Log:
  - Fix NPEs when context CL is null, which occurs in JNI mode (cool feature 
...).
  
  Revision  ChangesPath
  1.6   +28 -20
jakarta-tomcat-connectors/juli/src/java/org/apache/juli/ClassLoaderLogManager.java
  
  Index: ClassLoaderLogManager.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/juli/src/java/org/apache/juli/ClassLoaderLogManager.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ClassLoaderLogManager.java3 Mar 2005 13:34:17 -   1.5
  +++ ClassLoaderLogManager.java4 Mar 2005 14:59:19 -   1.6
  @@ -40,20 +40,6 @@
*/
   public final class ClassLoaderLogManager extends LogManager {
   
  -private static void doSetParentLogger(final Logger logger,
  -final Logger parent) {
  -if (System.getSecurityManager() != null) {
  -AccessController.doPrivileged(new PrivilegedAction() {
  -public Object run() {
  -logger.setParent(parent);
  -return null;
  -}
  -});
  -} else {
  -logger.setParent(parent);
  -}
  -}
  -
   private final Map classLoaderLoggers = new WeakHashMap();
   
   private Logger rootLogger;
  @@ -86,6 +72,9 @@
   }
   ClassLoader classLoader = 
   Thread.currentThread().getContextClassLoader();
  +if (classLoader == null) {
  +return super.addLogger(logger);
  +}
   ClassLoaderLogInfo info = getClassLoaderInfo(classLoader);
   if (info.loggers.containsKey(loggerName)) {
   return false;
  @@ -196,6 +185,9 @@
   }
   final ClassLoader classLoader = Thread.currentThread()
   .getContextClassLoader();
  +if (classLoader == null) {
  +return super.getLogger(name);
  +}
   final Map loggers = getClassLoaderInfo(classLoader).loggers;
   return (Logger) loggers.get(name);
   }
  @@ -208,6 +200,9 @@
   }
   final ClassLoader classLoader = Thread.currentThread()
   .getContextClassLoader();
  +if (classLoader == null) {
  +return super.getLoggerNames();
  +}
   final Map loggers = getClassLoaderInfo(classLoader).loggers;
   return Collections.enumeration(loggers.keySet());
   }
  @@ -218,12 +213,15 @@
* context.
*/
   public String getProperty(String name) {
  +final ClassLoader classLoader = Thread.currentThread()
  +.getContextClassLoader();
  +if (classLoader == null) {
  +return super.getProperty(name);
  +}
   String prefix = (String) this.prefix.get();
   if (prefix != null) {
   name = prefix + name;
   }
  -final ClassLoader classLoader = Thread.currentThread()
  -.getContextClassLoader();
   ClassLoaderLogInfo info = getClassLoaderInfo(classLoader);
   String result = info.props.getProperty(name);
   // If the property was not found, and the current classloader had no 
  @@ -264,10 +262,6 @@
   
   private ClassLoaderLogInfo getClassLoaderInfo(final ClassLoader 
classLoader) {
   
  -if (classLoader == null) {
  -return null;
  -}
  -
   ClassLoaderLogInfo info = (ClassLoaderLogInfo) classLoaderLoggers
   .get(classLoader);
   if (info == null) {
  @@ -365,6 +359,20 @@
   return info;
   }
   
  +private static void doSetParentLogger(final Logger logger,
  +final Logger parent) {
  +if (System.getSecurityManager() != null) {
  +AccessController.doPrivileged(new PrivilegedAction() {
  +public Object run() {
  +logger.setParent(parent);
  +return null;
  +}
  +});
  +} else {
  +logger.setParent(parent);
  +}
  +}
  +
   private static final class LogNode {
   Logger logger;
   
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-tomcat-connectors/juli/src/java/org/apache/juli ClassLoaderLogManager.java

2005-03-04 Thread remm
remm2005/03/04 07:33:41

  Modified:juli/src/java/org/apache/juli ClassLoaderLogManager.java
  Log:
  - Cleanup.
  - Remove special root and global loggers handling (it seems useless to me). 
global will simply delegate, so that it will always use the JVM configuration.
  - Remove some if(securityManager), which is only really useful in the 
critical path (the methods concerned were already synchromized, so ...).
  
  Revision  ChangesPath
  1.7   +94 -76
jakarta-tomcat-connectors/juli/src/java/org/apache/juli/ClassLoaderLogManager.java
  
  Index: ClassLoaderLogManager.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/juli/src/java/org/apache/juli/ClassLoaderLogManager.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ClassLoaderLogManager.java4 Mar 2005 14:59:19 -   1.6
  +++ ClassLoaderLogManager.java4 Mar 2005 15:33:41 -   1.7
  @@ -40,39 +40,40 @@
*/
   public final class ClassLoaderLogManager extends LogManager {
   
  -private final Map classLoaderLoggers = new WeakHashMap();
   
  -private Logger rootLogger;
  +// -- 
Variables
  +
  +
  +/**
  + * Map containing the classloader information, keyed per classloader. A
  + * weak hashmap is used to ensure no classloader reference is leaked 
from 
  + * application redeployment.
  + */
  +private final Map classLoaderLoggers = new WeakHashMap();
   
  -private Logger globalLogger;
   
  +/**
  + * This prefix is used to allow using prefixes for the properties names
  + * of handlers and their subcomponents.
  + */
   private ThreadLocal prefix = new ThreadLocal();
   
  +
  +// - Public 
Methods
  +
  +
  +/**
  + * Add the specified logger to the classloader local configuration.
  + * 
  + * @param logger The logger to be added
  + */
   public synchronized boolean addLogger(final Logger logger) {
  +
   final String loggerName = logger.getName();
  -if (.equals(loggerName)) {
  -final boolean unset = rootLogger == null;
  -if (unset) {
  -rootLogger = logger;
  -if (globalLogger != null) {
  -doSetParentLogger(globalLogger, rootLogger);
  -}
  -}
  -return unset;
  -}
  -if (global.equals(loggerName)) {
  -final boolean unset = globalLogger == null;
  -if (unset) {
  -globalLogger = logger;
  -if (rootLogger != null) {
  -doSetParentLogger(globalLogger, rootLogger);
  -}
  -}
  -return unset;
  -}
  +
   ClassLoader classLoader = 
   Thread.currentThread().getContextClassLoader();
  -if (classLoader == null) {
  +if (classLoader == null || (global.equals(loggerName))) {
   return super.addLogger(logger);
   }
   ClassLoaderLogInfo info = getClassLoaderInfo(classLoader);
  @@ -82,34 +83,22 @@
   
   info.loggers.put(loggerName, logger);
   
  -// apply initial level for new logger
  -String levelString = getProperty(loggerName + .level);
  -final Level level;
  +// Apply initial level for new logger
  +final String levelString = getProperty(loggerName + .level);
   if (levelString != null) {
  -Level parsedLevel = null;
   try {
  -parsedLevel = Level.parse(levelString.trim());
  -} catch (IllegalArgumentException e) {
  -// leave level set to null
  -}
  -level = parsedLevel;
  -} else {
  -level = null;
  -}
  -if (level != null) {
  -if (System.getSecurityManager() == null) {
  -logger.setLevel(level);
  -} else {
   AccessController.doPrivileged(new PrivilegedAction() {
   public Object run() {
  -logger.setLevel(level);
  +logger.setLevel(Level.parse(levelString.trim()));
   return null;
   }
   });
  +} catch (IllegalArgumentException e) {
  +// Leave level set to null
   }
   }
   
  -// if any parent loggers have levels definied, make sure they are
  +// If any parent loggers have levels definied, make sure they are
   // instantiated
   int dotIndex = loggerName.lastIndexOf('.');
   while (dotIndex = 0) {
  @@ -121,17 +110,17 @@
   dotIndex = loggerName.lastIndexOf('.', 

cvs commit: jakarta-tomcat-connectors/juli/src/java/org/apache/juli ClassLoaderLogManager.java

2005-03-03 Thread remm
remm2005/03/03 05:34:17

  Modified:.build.xml
   juli/src/java/org/apache/juli ClassLoaderLogManager.java
  Added:   resources logging.properties
  Log:
  - Add a sample default configuration. Webapps can use their own configuration 
by having a logging.properties in their own classloader.
  - Properly parse and set handlers.
  - Fix useParentHandlers initialization (it tended to be always set to false).
  - The necessary system property is not present yet, however 
(-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager is needed
in JAVA_OPTS or CATALINA_OPTS). Some hacking of the startup scripts is 
needed.
  
  Revision  ChangesPath
  1.225 +3 -0  jakarta-tomcat-5/build.xml
  
  Index: build.xml
  ===
  RCS file: /home/cvs/jakarta-tomcat-5/build.xml,v
  retrieving revision 1.224
  retrieving revision 1.225
  diff -u -r1.224 -r1.225
  --- build.xml 2 Mar 2005 18:36:29 -   1.224
  +++ build.xml 3 Mar 2005 13:34:17 -   1.225
  @@ -307,6 +307,9 @@
  /fileset
/jar
   
  + copy file=${basedir}/resources/logging.properties
  +  todir=${tomcat.build}/common/classes / 
  + 
  /target
   
 target name=build-jasper 
  
  
  
  1.1  jakarta-tomcat-5/resources/logging.properties
  
  Index: logging.properties
  ===
  handlers = 1catalina.org.apache.juli.FileHandler, 
2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 
4admin.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
  
  .handlers = 1catalina.org.apache.juli.FileHandler, 
java.util.logging.ConsoleHandler
  
  
  # Handler specific properties.
  # Describes specific configuration info for Handlers.
  
  
  1catalina.org.apache.juli.FileHandler.level = FINE
  1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
  1catalina.org.apache.juli.FileHandler.prefix = catalina.
  
  2localhost.org.apache.juli.FileHandler.level = FINE
  2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
  2localhost.org.apache.juli.FileHandler.prefix = localhost.
  
  3manager.org.apache.juli.FileHandler.level = FINE
  3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
  3manager.org.apache.juli.FileHandler.prefix = manager.
  
  4admin.org.apache.juli.FileHandler.level = FINE
  4admin.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
  4admin.org.apache.juli.FileHandler.prefix = admin.
  
  java.util.logging.ConsoleHandler.level = FINE
  java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
  
  
  
  # Facility specific properties.
  # Provides extra control for each logger.
  
  
  org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
  org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 
java.util.logging.ConsoleHandler, 2localhost.org.apache.juli.FileHandler
  
  
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level 
= INFO
  
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers
 = 3manager.org.apache.juli.FileHandler
  
  org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/admin].level 
= INFO
  
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/admin].handlers 
= 4admin.org.apache.juli.FileHandler
  
  # For example, set the com.xyz.foo logger to only log SEVERE
  # messages:
  #org.apache.catalina.startup.ContextConfig.level = FINE
  #org.apache.catalina.startup.HostConfig.level = FINE
  #org.apache.catalina.session.ManagerBase.level = FINE
  
  
  
  1.5   +30 -47
jakarta-tomcat-connectors/juli/src/java/org/apache/juli/ClassLoaderLogManager.java
  
  Index: ClassLoaderLogManager.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/juli/src/java/org/apache/juli/ClassLoaderLogManager.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ClassLoaderLogManager.java3 Mar 2005 01:51:12 -   1.4
  +++ ClassLoaderLogManager.java3 Mar 2005 13:34:17 -   1.5
  @@ -84,9 +84,9 @@
   }
   return unset;
   }
  -final ClassLoader classLoader = Thread.currentThread()
  -.getContextClassLoader();
  -final ClassLoaderLogInfo info = getClassLoaderInfo(classLoader);
  +ClassLoader classLoader = 
  +Thread.currentThread().getContextClassLoader();
  +ClassLoaderLogInfo info = 

cvs commit: jakarta-tomcat-connectors/juli/src/java/org/apache/juli ClassLoaderLogManager.java FileHandler.java

2005-03-02 Thread remm
remm2005/03/02 13:40:00

  Modified:juli/src/java/org/apache/juli ClassLoaderLogManager.java
FileHandler.java
  Log:
  - The java.util.logging javadocs imply that the configuration of the handler 
(filter, formatter, etc) should be done by the handler itself.
  
  Revision  ChangesPath
  1.2   +30 -3 
jakarta-tomcat-connectors/juli/src/java/org/apache/juli/ClassLoaderLogManager.java
  
  Index: ClassLoaderLogManager.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/juli/src/java/org/apache/juli/ClassLoaderLogManager.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ClassLoaderLogManager.java2 Mar 2005 18:30:45 -   1.1
  +++ ClassLoaderLogManager.java2 Mar 2005 21:40:00 -   1.2
  @@ -16,13 +16,23 @@
   
   package org.apache.juli;
   
  -import java.util.logging.*;
  -import java.util.*;
   import java.io.IOException;
   import java.io.InputStream;
   import java.net.URLClassLoader;
   import java.security.AccessController;
   import java.security.PrivilegedAction;
  +import java.util.Collections;
  +import java.util.Enumeration;
  +import java.util.HashMap;
  +import java.util.Iterator;
  +import java.util.Map;
  +import java.util.Properties;
  +import java.util.StringTokenizer;
  +import java.util.WeakHashMap;
  +import java.util.logging.Handler;
  +import java.util.logging.Level;
  +import java.util.logging.LogManager;
  +import java.util.logging.Logger;
   
   
   /**
  @@ -294,12 +304,29 @@
   this.prefix.set(prefix);
   Handler handler = 
   (Handler) 
classLoader.loadClass(handlerClassName).newInstance();
  -this.prefix.set(null);
  +// FIXME: The specification strongly implies 
this should be done in the
  +// handler configuration
  +/*
  +// Initialize handler's level
   String handlerLevel = 
   info.props.getProperty(handlerName + 
.level);
   if (handlerLevel != null) {
   
handler.setLevel(Level.parse(handlerLevel.trim()));
   }
  +// Initialize filter
  +String filterName =
  +info.props.getProperty(handlerName + 
.filter);
  +if (filterName != null) {
  +try {
  +handler.setFilter
  +((Filter) 
classLoader.loadClass(filterName).newInstance());
  +} catch (Exception e) {
  +// FIXME: Report this using the main 
logger ?
  +// Ignore
  +}
  +}
  +*/
  +this.prefix.set(null);
   info.handlers.put(handlerName, handler);
   if (rootHandlers == null) {
   localRootLogger.addHandler(handler);
  
  
  
  1.2   +37 -8 
jakarta-tomcat-connectors/juli/src/java/org/apache/juli/FileHandler.java
  
  Index: FileHandler.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/juli/src/java/org/apache/juli/FileHandler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- FileHandler.java  2 Mar 2005 18:30:45 -   1.1
  +++ FileHandler.java  2 Mar 2005 21:40:00 -   1.2
  @@ -23,7 +23,10 @@
   import java.io.UnsupportedEncodingException;
   import java.sql.Timestamp;
   import java.util.logging.ErrorManager;
  +import java.util.logging.Filter;
  +import java.util.logging.Formatter;
   import java.util.logging.Handler;
  +import java.util.logging.Level;
   import java.util.logging.LogManager;
   import java.util.logging.LogRecord;
   import java.util.logging.SimpleFormatter;
  @@ -238,27 +241,53 @@
   LogManager manager = LogManager.getLogManager();
   String className = FileHandler.class.getName();
   
  +ClassLoader cl = Thread.currentThread().getContextClassLoader();
  +
   // Retrieve configuration of logging file name
   directory = getProperty(className + .directory, logs);
   prefix = getProperty(className + .prefix, juli.);
   suffix = getProperty(className + .suffix, .log);
   
  -// FIXME: Add filter configuration in LogManager ?
  -//setFilter(manager.getFilterProperty(className + .filter, null));
  -// 

cvs commit: jakarta-tomcat-connectors/juli/src/java/org/apache/juli ClassLoaderLogManager.java FileHandler.java

2005-03-02 Thread remm
remm2005/03/02 16:23:00

  Modified:juli/src/java/org/apache/juli ClassLoaderLogManager.java
FileHandler.java
  Log:
  - Fix NPE caused by my last change.
  - Use ',' as separator for the handler lists.
  - Just noticed that java.util.logging does support a handlers property on 
loggers, and that I reinvented it
(I had been looking at the JDK 1.4 config files all along).
  
  Revision  ChangesPath
  1.3   +4 -4  
jakarta-tomcat-connectors/juli/src/java/org/apache/juli/ClassLoaderLogManager.java
  
  Index: ClassLoaderLogManager.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/juli/src/java/org/apache/juli/ClassLoaderLogManager.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ClassLoaderLogManager.java2 Mar 2005 21:40:00 -   1.2
  +++ ClassLoaderLogManager.java3 Mar 2005 00:23:00 -   1.3
  @@ -150,9 +150,9 @@
   final String handlers = getProperty(loggerName + .handlers);
   if (handlers != null) {
   logger.setUseParentHandlers(false);
  -StringTokenizer tok = new StringTokenizer(handlers);
  +StringTokenizer tok = new StringTokenizer(handlers, ,);
   while (tok.hasMoreTokens()) {
  -String handlerName = (tok.nextToken());
  +String handlerName = (tok.nextToken().trim());
   Handler handler = (Handler) info.handlers.get(handlerName);
   if (handler != null) {
   logger.addHandler(handler);
  @@ -283,9 +283,9 @@
   String rootHandlers = info.props.getProperty(.handlers);
   String handlers = info.props.getProperty(handlers);
   if (handlers != null) {
  -StringTokenizer tok = new StringTokenizer(handlers);
  +StringTokenizer tok = new StringTokenizer(handlers, ,);
   while (tok.hasMoreTokens()) {
  -String handlerName = (tok.nextToken());
  +String handlerName = (tok.nextToken().trim());
   String handlerClassName = handlerName;
   String prefix = ;
   if (handlerClassName.length() = 0) {
  
  
  
  1.3   +4 -2  
jakarta-tomcat-connectors/juli/src/java/org/apache/juli/FileHandler.java
  
  Index: FileHandler.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/juli/src/java/org/apache/juli/FileHandler.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FileHandler.java  2 Mar 2005 21:40:00 -   1.2
  +++ FileHandler.java  3 Mar 2005 00:23:00 -   1.3
  @@ -297,8 +297,10 @@
   String value = LogManager.getLogManager().getProperty(name);
   if (value == null) {
   value = defaultValue;
  +} else {
  +value = value.trim();
   }
  -return value.trim();
  +return value;
   }
   
   
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-tomcat-connectors/juli/src/java/org/apache/juli ClassLoaderLogManager.java FileHandler.java

2005-03-02 Thread remm
remm2005/03/02 17:51:13

  Modified:juli/src/java/org/apache/juli ClassLoaderLogManager.java
FileHandler.java
  Log:
  - Implement delegation in getProperty (when the current classloader does not 
have any configuration).
  - Read useParentHandlers property.
  - Code cleanup in FileHandler.
  
  Revision  ChangesPath
  1.4   +31 -5 
jakarta-tomcat-connectors/juli/src/java/org/apache/juli/ClassLoaderLogManager.java
  
  Index: ClassLoaderLogManager.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/juli/src/java/org/apache/juli/ClassLoaderLogManager.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ClassLoaderLogManager.java3 Mar 2005 00:23:00 -   1.3
  +++ ClassLoaderLogManager.java3 Mar 2005 01:51:12 -   1.4
  @@ -159,6 +159,17 @@
   }
   }
   }
  +
  +// Parse useParentHandlers to set if the logger should delegate to 
its parent.
  +// Unlike java.util.logging, the default is to not delegate if a 
list of handlers
  +// has been specified for the logger.
  +String useParentHandlersString = getProperty(loggerName + 
.useParentHandlers);
  +if ((useParentHandlersString != null) 
  + 
(!Boolean.valueOf(useParentHandlersString).booleanValue())) {
  +logger.setUseParentHandlers(false);
  +} else {
  +logger.setUseParentHandlers(true);
  +}
   
   return true;
   }
  @@ -216,11 +227,26 @@
   }
   final ClassLoader classLoader = Thread.currentThread()
   .getContextClassLoader();
  -String result = 
  -getClassLoaderInfo(classLoader).props.getProperty(name);
  -if (result == null) {
  -// FIXME: Look in parent classloader ? Probably not.
  -result = super.getProperty(name);
  +ClassLoaderLogInfo info = getClassLoaderInfo(classLoader);
  +String result = info.props.getProperty(name);
  +// If the property was not found, and the current classloader had no 
  +// configuration (property list is empty), look for the parent 
classloader
  +// properties.
  +if ((result == null)  (info.props.isEmpty())) {
  +ClassLoader current = classLoader.getParent();
  +while (current != null) {
  +info = (ClassLoaderLogInfo) classLoaderLoggers.get(current);
  +if (info != null) {
  +result = info.props.getProperty(name);
  +if ((result != null) || (!info.props.isEmpty())) {
  +break;
  +}
  +}
  +current = current.getParent();
  +}
  +if (result == null) {
  +result = super.getProperty(name);
  +}
   }
   // Simple property replacement (mostly for folder names)
   if (result != null) {
  
  
  
  1.4   +11 -72
jakarta-tomcat-connectors/juli/src/java/org/apache/juli/FileHandler.java
  
  Index: FileHandler.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/juli/src/java/org/apache/juli/FileHandler.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FileHandler.java  3 Mar 2005 00:23:00 -   1.3
  +++ FileHandler.java  3 Mar 2005 01:51:12 -   1.4
  @@ -20,7 +20,6 @@
   import java.io.File;
   import java.io.FileWriter;
   import java.io.PrintWriter;
  -import java.io.UnsupportedEncodingException;
   import java.sql.Timestamp;
   import java.util.logging.ErrorManager;
   import java.util.logging.Filter;
  @@ -51,6 +50,14 @@
   open();
   }
   
  +
  +public FileHandler(String directory, String prefix, String suffix) {
  +this();
  +this.directory = directory;
  +this.prefix = prefix;
  +this.suffix = suffix;
  +}
  +
   
   // - Instance 
Variables
   
  @@ -86,63 +93,6 @@
   private PrintWriter writer = null;
   
   
  -// - 
Properties
  -
  -
  -/**
  - * Return the directory in which we create log files.
  -public String getDirectory() {
  -return (directory);
  -}
  - */
  -
  -
  -/**
  - * Set the directory in which we create log files.
  - *
  - * @param directory The new log file directory
  -public void setDirectory(String directory) {
  -this.directory = directory;
  -}
  - */
  -
  -
  -/**
  - * Return the log file prefix.
  -public String getPrefix() {
  -return (prefix);
  -}
  - */
  -
  -
  -/**
  -