You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2011/01/24 03:33:05 UTC
svn commit: r1062610 -
/geronimo/server/branches/3.0-M2/framework/modules/geronimo-pax-logging/src/main/java/org/apache/geronimo/logging/impl/LoggingServiceActivator.java
Author: gawor
Date: Mon Jan 24 02:33:05 2011
New Revision: 1062610
URL: http://svn.apache.org/viewvc?rev=1062610&view=rev
Log:
GERONIMO-5780: JUL output is lost after application resets logging
Modified:
geronimo/server/branches/3.0-M2/framework/modules/geronimo-pax-logging/src/main/java/org/apache/geronimo/logging/impl/LoggingServiceActivator.java
Modified: geronimo/server/branches/3.0-M2/framework/modules/geronimo-pax-logging/src/main/java/org/apache/geronimo/logging/impl/LoggingServiceActivator.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/3.0-M2/framework/modules/geronimo-pax-logging/src/main/java/org/apache/geronimo/logging/impl/LoggingServiceActivator.java?rev=1062610&r1=1062609&r2=1062610&view=diff
==============================================================================
--- geronimo/server/branches/3.0-M2/framework/modules/geronimo-pax-logging/src/main/java/org/apache/geronimo/logging/impl/LoggingServiceActivator.java (original)
+++ geronimo/server/branches/3.0-M2/framework/modules/geronimo-pax-logging/src/main/java/org/apache/geronimo/logging/impl/LoggingServiceActivator.java Mon Jan 24 02:33:05 2011
@@ -17,6 +17,15 @@
package org.apache.geronimo.logging.impl;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.logging.Handler;
+import java.util.logging.LogManager;
+import java.util.logging.Logger;
+
import org.apache.geronimo.logging.SystemLog;
import org.apache.geronimo.main.ServerInfo;
import org.ops4j.pax.logging.service.internal.Activator;
@@ -50,6 +59,27 @@ public class LoggingServiceActivator imp
}
activator.start(context);
+
+ if (!Boolean.valueOf(context.getProperty("org.ops4j.pax.logging.skipJUL"))) {
+ // ensure PAX's JdkHandler is re-installed after JUL reset
+
+ final LogManager manager = LogManager.getLogManager();
+ final Handler[] paxHandlers = manager.getLogger("").getHandlers();
+
+ manager.addPropertyChangeListener(new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent evt) {
+ Logger rootLogger = manager.getLogger("");
+ Handler[] handlers = rootLogger.getHandlers();
+ List<Handler> handlerList = (handlers == null) ? Collections.<Handler>emptyList() : Arrays.asList(handlers);
+ for (Handler h : paxHandlers) {
+ if (!handlerList.contains(h)) {
+ rootLogger.addHandler(h);
+ }
+ }
+ rootLogger.warning("java.util.logging has been reset by application or component");
+ }
+ });
+ }
}
private <T> T getService(BundleContext context, Class<T> name) {