[jboss-svn-commits] JBoss Common SVN: r4826 - jboss-logmanager/trunk/src/main/java/org/jboss/logmanager.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Aug 13 02:40:19 EDT 2010


Author: david.lloyd at jboss.com
Date: 2010-08-13 02:40:19 -0400 (Fri, 13 Aug 2010)
New Revision: 4826

Modified:
   jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/Logger.java
   jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/LoggerNode.java
   jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/PropertyConfigurator.java
Log:
Better error handling; prevent mindless resource bundle lookup; fix level-setting problem

Modified: jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/Logger.java
===================================================================
--- jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/Logger.java	2010-08-04 13:25:43 UTC (rev 4825)
+++ jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/Logger.java	2010-08-13 06:40:19 UTC (rev 4826)
@@ -656,13 +656,16 @@
         record.setLoggerName(getName());
         String bundleName = null;
         ResourceBundle bundle = null;
-        for (Logger current = this; current != null; current = current.getParent()) {
-            bundleName = current.getResourceBundleName();
-            if (bundleName != null) {
-                bundle = current.getResourceBundle();
-                break;
-            }
-        }
+        // todo: new parents never have resource bundles; this could cause an issue
+        bundleName = getResourceBundleName();
+        bundle = getResourceBundle();
+//        for (Logger current = this; current != null; current = current.getParent()) {
+//            bundleName = current.getResourceBundleName();
+//            if (bundleName != null) {
+//                bundle = current.getResourceBundle();
+//                break;
+//            }
+//        }
         if (bundleName != null && bundle != null) {
             record.setResourceBundleName(bundleName);
             record.setResourceBundle(bundle);

Modified: jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/LoggerNode.java
===================================================================
--- jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/LoggerNode.java	2010-08-04 13:25:43 UTC (rev 4825)
+++ jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/LoggerNode.java	2010-08-13 06:40:19 UTC (rev 4826)
@@ -135,6 +135,7 @@
             fullName = parent.fullName + "." + nodeName;
         }
         this.context = context;
+        effectiveLevel = parent.effectiveLevel;
     }
 
     /**
@@ -195,15 +196,11 @@
             return AccessController.doPrivileged(new PrivilegedAction<Logger>() {
                 public Logger run() {
                     final Logger logger = new Logger(LoggerNode.this, fullName);
-                    // initialize the effective level
-                    logger.setLevel(null);
                     return logger;
                 }
             });
         } else {
             final Logger logger = new Logger(this, fullName);
-            // initialize the effective level
-            logger.setLevel(null);
             return logger;
         }
     }

Modified: jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/PropertyConfigurator.java
===================================================================
--- jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/PropertyConfigurator.java	2010-08-04 13:25:43 UTC (rev 4825)
+++ jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/PropertyConfigurator.java	2010-08-13 06:40:19 UTC (rev 4826)
@@ -27,6 +27,7 @@
 import java.io.Closeable;
 import java.io.File;
 import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
 import java.util.Properties;
 import java.util.List;
 import java.util.ArrayList;
@@ -54,6 +55,8 @@
 
     private static final String[] EMPTY_STRINGS = new String[0];
 
+    private boolean reportErrors;
+
     /**
      * Construct an instance.
      */
@@ -87,6 +90,7 @@
         // Start with the list of loggers to configure.  The root logger is always on the list.
         final List<String> loggerNames = getStringCsvList(properties, "loggers", "");
         final Set<String> done = new HashSet<String>();
+        reportErrors = Boolean.parseBoolean(properties.getProperty("reportErrors", "true"));
 
         // Now, for each logger name, configure any filters, handlers, etc.
         for (String loggerName : loggerNames) {
@@ -100,19 +104,31 @@
             // Get logger level
             final String levelName = getStringProperty(properties, getKey("logger", loggerName, "level"));
             if (levelName != null) {
-                logger.setLevel(LogContext.getSystemLogContext().getLevelForName(levelName));
+                try {
+                    logger.setLevel(LogContext.getSystemLogContext().getLevelForName(levelName));
+                } catch (IllegalArgumentException e) {
+                    System.err.printf("Failed to set level %s on %s: %s\n", levelName, logger, e.getMessage());
+                }
             }
 
             // Get logger filter
             final String filterName = getStringProperty(properties, getKey("logger", loggerName, "filter"));
             if (filterName != null) {
-                logger.setFilter(configureFilter(properties, filterName));
+                try {
+                    logger.setFilter(configureFilter(properties, filterName));
+                } catch (IllegalArgumentException e) {
+                    System.err.printf("Failed to configure filter %s on %s: %s\n", filterName, logger, e.getMessage());
+                }
             }
 
             // Get logger handlers
             final List<String> handlerNames = getStringCsvList(properties, getKey("logger", loggerName, "handlers"));
             for (String handlerName : handlerNames) {
-                logger.addHandler(configureHandler(properties, handlerName));
+                try {
+                    logger.addHandler(configureHandler(properties, handlerName));
+                } catch (IllegalArgumentException e) {
+                    System.err.printf("Failed to configure handler %s on %s: %s\n", handlerName, logger, e.getMessage());
+                }
             }
 
             // Get logger properties
@@ -156,13 +172,24 @@
                     final Object argument;
                     final Method method = setters.get(propertyName);
                     if (method == null) {
-                        throw new IllegalArgumentException("Declared property " + propertyName + " wasn't found on " + objClass);
+                        if (reportErrors) {
+                            System.err.printf("Declared property %s wasn't found on %s\n", propertyName, objClass);
+                        }
+                        continue;
                     }
-                    argument = getArgument(properties, method, propertyName, propValue);
                     try {
+                        argument = getArgument(properties, method, propertyName, propValue);
+                    } catch (IllegalArgumentException e) {
+                        System.err.printf("Failed to interpret parameter type for %s: %s\n", object, e.getMessage());
+                        continue;
+                    }
+                    try {
                         method.invoke(object, argument);
                     } catch (Exception e) {
-                        throw new IllegalArgumentException("Unable to set property " + propertyName + " on " + objClass, e);
+                        if (reportErrors) {
+                            System.err.printf("Unable to set property %s on %s: ", propertyName, objClass);
+                            e.printStackTrace(System.err);
+                        }
                     }
                 }
             } while (it.hasNext());
@@ -205,10 +232,9 @@
             argument = TimeZone.getTimeZone(propValue);
         } else if (paramType == Charset.class) {
             argument = Charset.forName(propValue);
-        } else if (Enum.class.isAssignableFrom(paramType)) {
+        } else if (paramType.isEnum()) {
             argument = Enum.valueOf(paramType.asSubclass(Enum.class), propValue);
         } else {
-            // ???
             throw new IllegalArgumentException("Unknown parameter type for property " + propertyName + " on " + objClass);
         }
         return argument;
@@ -235,31 +261,51 @@
         // Get handler level
         final String levelName = getStringProperty(properties, getKey("handler", handlerName, "level"));
         if (levelName != null) {
-            handler.setLevel(LogContext.getSystemLogContext().getLevelForName(levelName));
+            try {
+                handler.setLevel(LogContext.getSystemLogContext().getLevelForName(levelName));
+            } catch (IllegalArgumentException e) {
+                System.err.printf("Failed to set level %s on %s: %s\n", levelName, handler, e.getMessage());
+            }
         }
 
         // Get handler encoding
         final String encodingName = getStringProperty(properties, getKey("handler", handlerName, "encoding"));
         if (encodingName != null) {
-            handler.setEncoding(encodingName);
+            try {
+                handler.setEncoding(encodingName);
+            } catch (UnsupportedEncodingException e) {
+                System.err.printf("Failed to set encoding %s on %s: %s\n", encodingName, handler, e.getMessage());
+            }
         }
 
         // Get error handler
         final String errorManagerName = getStringProperty(properties, getKey("handler", handlerName, "errorManager"));
         if (errorManagerName != null) {
-            handler.setErrorManager(configureErrorManager(properties, errorManagerName));
+            try {
+                handler.setErrorManager(configureErrorManager(properties, errorManagerName));
+            } catch (IllegalArgumentException e) {
+                System.err.printf("Failed to set error manager %s on %s: %s\n", errorManagerName, handler, e.getMessage());
+            }
         }
 
         // Get filter
         final String filterName = getStringProperty(properties, getKey("handler", handlerName, "filter"));
         if (filterName != null) {
-            handler.setFilter(configureFilter(properties, filterName));
+            try {
+                handler.setFilter(configureFilter(properties, filterName));
+            } catch (IllegalArgumentException e) {
+                System.err.printf("Failed to set filter %s on %s: %s\n", filterName, handler, e.getMessage());
+            }
         }
 
         // Get formatter
         final String formatterName = getStringProperty(properties, getKey("handler", handlerName, "formatter"));
         if (formatterName != null) {
-            handler.setFormatter(configureFormatter(properties, formatterName));
+            try {
+                handler.setFormatter(configureFormatter(properties, formatterName));
+            } catch (IllegalArgumentException e) {
+                System.err.printf("Failed to set formatter %s on %s: %s\n", filterName, handler, e.getMessage());
+            }
         }
 
         // Get properties



More information about the jboss-svn-commits mailing list