You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by da...@apache.org on 2004/11/10 09:15:54 UTC
svn commit: rev 57150 - in geronimo/trunk/modules: assembly/src/plan assembly/src/var/log kernel/src/java/org/apache/geronimo/kernel kernel/src/java/org/apache/geronimo/kernel/log system/src/java/org/apache/geronimo/system/logging/log4j system/src/java/org/apache/geronimo/system/logging/log4j/appender system/src/java/org/apache/geronimo/system/serverinfo
Author: dain
Date: Wed Nov 10 00:15:53 2004
New Revision: 57150
Added:
geronimo/trunk/modules/assembly/src/var/log/
geronimo/trunk/modules/assembly/src/var/log/client-log4j.properties
geronimo/trunk/modules/assembly/src/var/log/deployer-log4j.properties
geronimo/trunk/modules/assembly/src/var/log/server-log4j.properties
Removed:
geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/logging/log4j/appender/AbstractAppenderService.java
geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/logging/log4j/appender/ConsoleAppenderService.java
geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/logging/log4j/appender/DailyRollingFileAppenderService.java
geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/logging/log4j/appender/FileAppenderService.java
geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/logging/log4j/appender/RollingFileAppenderService.java
Modified:
geronimo/trunk/modules/assembly/src/plan/client-system-plan.xml
geronimo/trunk/modules/assembly/src/plan/deployer-system-plan.xml
geronimo/trunk/modules/assembly/src/plan/system-plan.xml
geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java
geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/KernelMBean.java
geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/log/GeronimoLogFactory.java
geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/logging/log4j/Log4jService.java
geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/serverinfo/ServerInfo.java
Log:
Removed gbeans that wrapped log4j appenders as they don't work reliable
Added -log4j.properties files for server, client and deployer
Modified: geronimo/trunk/modules/assembly/src/plan/client-system-plan.xml
==============================================================================
--- geronimo/trunk/modules/assembly/src/plan/client-system-plan.xml (original)
+++ geronimo/trunk/modules/assembly/src/plan/client-system-plan.xml Wed Nov 10 00:15:53 2004
@@ -52,27 +52,8 @@
<!-- Logging service -->
<gbean name="geronimo.client:role=Logger" class="org.apache.geronimo.system.logging.log4j.Log4jService">
- <attribute name="rootLoggerLevel" type="java.lang.String">DEBUG</attribute>
- <attribute name="refreshPeriod" type="int">60</attribute>
- <attribute name="configurationFile" type="java.lang.String">var/log/log4j.xml</attribute>
- <reference name="ServerInfo">geronimo.client:role=ServerInfo</reference>
- </gbean>
-
- <gbean name="geronimo.client:role=LogAppender,type=ConsoleAppender" class="org.apache.geronimo.system.logging.log4j.appender.ConsoleAppenderService">
- <attribute name="threshold" type="java.lang.String">INFO</attribute>
- <attribute name="layoutPattern" type="java.lang.String">%d{ABSOLUTE} %-5p [%c{1}] %m%n</attribute>
- <attribute name="target" type="java.lang.String">System.out</attribute>
- </gbean>
-
- <gbean name="geronimo.client:role=LogAppender,type=DailyRollingFileAppender" class="org.apache.geronimo.system.logging.log4j.appender.RollingFileAppenderService">
- <attribute name="threshold" type="java.lang.String">DEBUG</attribute>
- <attribute name="layoutPattern" type="java.lang.String">%d{ABSOLUTE} %-5p [%c{1}] %m%n</attribute>
- <attribute name="append" type="boolean">true</attribute>
- <attribute name="file" type="java.lang.String">var/log/client.log</attribute>
- <attribute name="bufferedIO" type="boolean">false</attribute>
- <attribute name="bufferedSize" type="int">8192</attribute>
- <attribute name="maxBackupIndex" type="int">1</attribute>
- <attribute name="maxFileSize" type="java.lang.String">10MB</attribute>
+ <attribute name="configurationFile">var/log/client-log4j.properties</attribute>
+ <attribute name="refreshPeriod">60</attribute>
<reference name="ServerInfo">geronimo.client:role=ServerInfo</reference>
</gbean>
Modified: geronimo/trunk/modules/assembly/src/plan/deployer-system-plan.xml
==============================================================================
--- geronimo/trunk/modules/assembly/src/plan/deployer-system-plan.xml (original)
+++ geronimo/trunk/modules/assembly/src/plan/deployer-system-plan.xml Wed Nov 10 00:15:53 2004
@@ -46,27 +46,8 @@
<!-- Logging service -->
<gbean name="geronimo.deployment:role=Logger" class="org.apache.geronimo.system.logging.log4j.Log4jService">
- <attribute name="rootLoggerLevel" type="java.lang.String">DEBUG</attribute>
- <attribute name="refreshPeriod" type="int">60</attribute>
- <attribute name="configurationFile" type="java.lang.String">var/log/log4j.xml</attribute>
+ <attribute name="configurationFile">var/log/deployer-log4j.properties</attribute>
+ <attribute name="refreshPeriod">60</attribute>
<reference name="ServerInfo">geronimo.system:role=ServerInfo</reference>
- </gbean>
-
- <gbean name="geronimo.deployments:role=LogAppender,type=ConsoleAppender" class="org.apache.geronimo.system.logging.log4j.appender.ConsoleAppenderService">
- <attribute name="threshold" type="java.lang.String">ERROR</attribute>
- <attribute name="layoutPattern" type="java.lang.String">%d{ABSOLUTE} %-5p [%c{1}] %m%n</attribute>
- <attribute name="target" type="java.lang.String">System.out</attribute>
- </gbean>
-
- <gbean name="geronimo.deployment:role=LogAppender,type=DailyRollingFileAppender" class="org.apache.geronimo.system.logging.log4j.appender.RollingFileAppenderService">
- <attribute name="threshold" type="java.lang.String">DEBUG</attribute>
- <attribute name="layoutPattern" type="java.lang.String">%d{ABSOLUTE} %-5p [%c{1}] %m%n</attribute>
- <attribute name="append" type="boolean">true</attribute>
- <attribute name="file" type="java.lang.String">var/log/deployer.log</attribute>
- <attribute name="bufferedIO" type="boolean">false</attribute>
- <attribute name="bufferedSize" type="int">8192</attribute>
- <attribute name="maxBackupIndex" type="int">1</attribute>
- <attribute name="maxFileSize" type="java.lang.String">10MB</attribute>
- <reference name="ServerInfo">geronimo.deployment:role=ServerInfo</reference>
</gbean>
</configuration>
Modified: geronimo/trunk/modules/assembly/src/plan/system-plan.xml
==============================================================================
--- geronimo/trunk/modules/assembly/src/plan/system-plan.xml (original)
+++ geronimo/trunk/modules/assembly/src/plan/system-plan.xml Wed Nov 10 00:15:53 2004
@@ -58,27 +58,8 @@
<!-- Logging service -->
<gbean name="geronimo.system:role=Logger" class="org.apache.geronimo.system.logging.log4j.Log4jService">
- <attribute name="rootLoggerLevel" type="java.lang.String">DEBUG</attribute>
- <attribute name="refreshPeriod" type="int">60</attribute>
- <attribute name="configurationFile" type="java.lang.String">var/log/log4j.xml</attribute>
- <reference name="ServerInfo">geronimo.system:role=ServerInfo</reference>
- </gbean>
-
- <gbean name="geronimo.system:role=LogAppender,type=ConsoleAppender" class="org.apache.geronimo.system.logging.log4j.appender.ConsoleAppenderService">
- <attribute name="threshold" type="java.lang.String">INFO</attribute>
- <attribute name="layoutPattern" type="java.lang.String">%d{ABSOLUTE} %-5p [%c{1}] %m%n</attribute>
- <attribute name="target" type="java.lang.String">System.out</attribute>
- </gbean>
-
- <gbean name="geronimo.system:role=LogAppender,type=DailyRollingFileAppender" class="org.apache.geronimo.system.logging.log4j.appender.RollingFileAppenderService">
- <attribute name="threshold" type="java.lang.String">DEBUG</attribute>
- <attribute name="layoutPattern" type="java.lang.String">%d{ABSOLUTE} %-5p [%c{1}] %m%n</attribute>
- <attribute name="append" type="boolean">true</attribute>
- <attribute name="file" type="java.lang.String">var/log/geronimo.log</attribute>
- <attribute name="bufferedIO" type="boolean">false</attribute>
- <attribute name="bufferedSize" type="int">8192</attribute>
- <attribute name="maxBackupIndex" type="int">1</attribute>
- <attribute name="maxFileSize" type="java.lang.String">10MB</attribute>
+ <attribute name="configurationFile">var/log/server-log4j.properties</attribute>
+ <attribute name="refreshPeriod">60</attribute>
<reference name="ServerInfo">geronimo.system:role=ServerInfo</reference>
</gbean>
@@ -93,5 +74,4 @@
<attribute name="namingFactoryUrlPkgs" type="java.lang.String">org.apache.geronimo.naming</attribute>
<attribute name="namingProviderUrl" type="java.lang.String">rmi://localhost:1099</attribute>
</gbean>
-
</configuration>
Added: geronimo/trunk/modules/assembly/src/var/log/client-log4j.properties
==============================================================================
--- (empty file)
+++ geronimo/trunk/modules/assembly/src/var/log/client-log4j.properties Wed Nov 10 00:15:53 2004
@@ -0,0 +1,45 @@
+##
+## Copyright 2004 The Apache Software Foundation
+##
+## Licensed under the Apache License, Version 2.0 (the "License");
+## you may not use this file except in compliance with the License.
+## You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+##
+## $Rev: 55226 $ $Date: 2004-10-21 08:26:49 -0700 (Thu, 21 Oct 2004) $
+##
+
+log4j.rootCategory=DEBUG, CONSOLE, FILE
+
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.Threshold=INFO
+log4j.appender.CONSOLE.Target=System.out
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n
+
+log4j.appender.FILE=org.apache.log4j.RollingFileAppender
+log4j.appender.FILE.threshold=DEBUG
+log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
+log4j.appender.FILE.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n
+log4j.appender.FILE.append=true
+log4j.appender.FILE.file=${geronimo.base.dir}/var/log/client.log
+log4j.appender.FILE.bufferedIO=false
+log4j.appender.FILE.maxBackupIndex=3
+log4j.appender.FILE.maxFileSize=10MB
+
+#
+# Example: enable trace logging from CONSOLE appender
+#
+#log4j.appender.CONSOLE.Threshold=TRACE#org.apache.geronimo.system.logging.log4j.XLevel
+
+#
+# Example: enable trace messages from foo.bar category
+#
+#log4j.category.foo.bar=TRACE#org.apache.geronimo.system.logging.log4j.XLevel
Added: geronimo/trunk/modules/assembly/src/var/log/deployer-log4j.properties
==============================================================================
--- (empty file)
+++ geronimo/trunk/modules/assembly/src/var/log/deployer-log4j.properties Wed Nov 10 00:15:53 2004
@@ -0,0 +1,45 @@
+##
+## Copyright 2004 The Apache Software Foundation
+##
+## Licensed under the Apache License, Version 2.0 (the "License");
+## you may not use this file except in compliance with the License.
+## You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+##
+## $Rev: 55226 $ $Date: 2004-10-21 08:26:49 -0700 (Thu, 21 Oct 2004) $
+##
+
+log4j.rootCategory=DEBUG, CONSOLE, FILE
+
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.Threshold=INFO
+log4j.appender.CONSOLE.Target=System.out
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n
+
+log4j.appender.FILE=org.apache.log4j.RollingFileAppender
+log4j.appender.FILE.threshold=DEBUG
+log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
+log4j.appender.FILE.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n
+log4j.appender.FILE.append=true
+log4j.appender.FILE.file=${geronimo.base.dir}/var/log/deployer.log
+log4j.appender.FILE.bufferedIO=false
+log4j.appender.FILE.maxBackupIndex=3
+log4j.appender.FILE.maxFileSize=10MB
+
+#
+# Example: enable trace logging from CONSOLE appender
+#
+#log4j.appender.CONSOLE.Threshold=TRACE#org.apache.geronimo.system.logging.log4j.XLevel
+
+#
+# Example: enable trace messages from foo.bar category
+#
+#log4j.category.foo.bar=TRACE#org.apache.geronimo.system.logging.log4j.XLevel
Added: geronimo/trunk/modules/assembly/src/var/log/server-log4j.properties
==============================================================================
--- (empty file)
+++ geronimo/trunk/modules/assembly/src/var/log/server-log4j.properties Wed Nov 10 00:15:53 2004
@@ -0,0 +1,45 @@
+##
+## Copyright 2004 The Apache Software Foundation
+##
+## Licensed under the Apache License, Version 2.0 (the "License");
+## you may not use this file except in compliance with the License.
+## You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+##
+## $Rev: 55226 $ $Date: 2004-10-21 08:26:49 -0700 (Thu, 21 Oct 2004) $
+##
+
+log4j.rootCategory=DEBUG, CONSOLE, FILE
+
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.Threshold=INFO
+log4j.appender.CONSOLE.Target=System.out
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n
+
+log4j.appender.FILE=org.apache.log4j.RollingFileAppender
+log4j.appender.FILE.threshold=DEBUG
+log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
+log4j.appender.FILE.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n
+log4j.appender.FILE.append=true
+log4j.appender.FILE.file=${geronimo.base.dir}/var/log/geronimo.log
+log4j.appender.FILE.bufferedIO=false
+log4j.appender.FILE.maxBackupIndex=3
+log4j.appender.FILE.maxFileSize=10MB
+
+#
+# Example: enable trace logging from CONSOLE appender
+#
+#log4j.appender.CONSOLE.Threshold=TRACE#org.apache.geronimo.system.logging.log4j.XLevel
+
+#
+# Example: enable trace messages from foo.bar category
+#
+#log4j.category.foo.bar=TRACE#org.apache.geronimo.system.logging.log4j.XLevel
Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java
==============================================================================
--- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java (original)
+++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java Wed Nov 10 00:15:53 2004
@@ -579,6 +579,10 @@
return running;
}
+ public ClassLoader getClassLoaderFor(ObjectName objectName) throws InstanceNotFoundException {
+ return mbServer.getClassLoaderFor(objectName);
+ }
+
private static void processQueue() {
KernelReference kernelRef;
while ((kernelRef = (KernelReference) queue.poll()) != null) {
Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/KernelMBean.java
==============================================================================
--- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/KernelMBean.java (original)
+++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/KernelMBean.java Wed Nov 10 00:15:53 2004
@@ -156,4 +156,6 @@
void unregisterShutdownHook(Runnable hook);
void shutdown();
+
+ ClassLoader getClassLoaderFor(ObjectName objectName) throws InstanceNotFoundException;
}
Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/log/GeronimoLogFactory.java
==============================================================================
--- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/log/GeronimoLogFactory.java (original)
+++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/log/GeronimoLogFactory.java Wed Nov 10 00:15:53 2004
@@ -48,7 +48,7 @@
public void setLogFactory(LogFactory logFactory) {
// change the log factory
- this.logFactory = logFactory;
+ GeronimoLogFactory.logFactory = logFactory;
// update all known logs to use instances of the new factory
Set logs = getInstances();
Modified: geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/logging/log4j/Log4jService.java
==============================================================================
--- geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/logging/log4j/Log4jService.java (original)
+++ geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/logging/log4j/Log4jService.java Wed Nov 10 00:15:53 2004
@@ -17,11 +17,18 @@
package org.apache.geronimo.system.logging.log4j;
-import java.net.URI;
-import java.net.URL;
-import java.net.URLConnection;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.net.MalformedURLException;
import java.util.Timer;
import java.util.TimerTask;
+import java.util.Set;
+import java.util.Iterator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogConfigurationException;
@@ -32,6 +39,7 @@
import org.apache.geronimo.kernel.log.GeronimoLogFactory;
import org.apache.geronimo.system.serverinfo.ServerInfo;
import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
/**
@@ -53,7 +61,7 @@
/**
* The properties service
*/
- private ServerInfo serverInfo;
+ private final ServerInfo serverInfo;
/**
* The URL watch timer (in daemon mode).
@@ -71,11 +79,6 @@
private long lastChanged = -1;
/**
- * The level used for the root logger
- */
- private Level rootLoggerLevel;
-
- /**
* Is this service running?
*/
private boolean running = false;
@@ -86,12 +89,7 @@
* @param configurationFile The log4j configuration file.
* @param refreshPeroid The refresh refreshPeroid (in seconds).
*/
- public Log4jService(final String rootLoggerLevel, final String configurationFile, final int refreshPeroid, ServerInfo serverInfo) {
- LogFactory logFactory = LogFactory.getFactory();
- if (!(logFactory instanceof GeronimoLogFactory)) {
- throw new IllegalStateException("Commons log factory: " + logFactory + " is not a GeronimoLogFactory");
- }
- this.rootLoggerLevel = XLevel.toLevel(rootLoggerLevel);
+ public Log4jService(final String configurationFile, final int refreshPeroid, ServerInfo serverInfo) {
this.refreshPeriod = refreshPeroid;
this.configurationFile = configurationFile;
this.serverInfo = serverInfo;
@@ -101,8 +99,10 @@
* Gets the level of the root logger.
*/
public synchronized String getRootLoggerLevel() {
- if (rootLoggerLevel != null) {
- return rootLoggerLevel.toString();
+ Level level = LogManager.getRootLogger().getLevel();
+
+ if (level != null) {
+ return level.toString();
}
return null;
@@ -114,14 +114,26 @@
* @param level The level to change the logger to.
*/
public synchronized void setRootLoggerLevel(final String level) {
- if (level == null) {
- rootLoggerLevel = null;
- } else {
- rootLoggerLevel = XLevel.toLevel(level);
- if (running) {
- Logger.getRootLogger().setLevel(rootLoggerLevel);
- }
+ LogManager.getRootLogger().setLevel(XLevel.toLevel(level));
+ }
+
+ /**
+ * Gets the level of the logger of the give name.
+ *
+ * @param logger The logger to inspect.
+ */
+ public String getLoggerEffectiveLevel(final String logger) {
+ if (logger == null) {
+ throw new IllegalArgumentException("logger is null");
+ }
+
+ Level level = LogManager.getLogger(logger).getEffectiveLevel();
+
+ if (level != null) {
+ return level.toString();
}
+
+ return null;
}
/**
@@ -134,7 +146,7 @@
throw new IllegalArgumentException("logger is null");
}
- Level level = Logger.getLogger(logger).getLevel();
+ Level level = LogManager.getLogger(logger).getLevel();
if (level != null) {
return level.toString();
@@ -209,14 +221,102 @@
}
/**
+ * Get the content of logging configuration file.
+ *
+ * @return the content of logging configuration file
+ */
+ public synchronized String getConfiguration() {
+ File file = resolveConfigurationFile();
+ if (file == null || !file.canRead()) {
+ return null;
+ }
+ Reader in = null;
+ try {
+ StringBuffer configuration = new StringBuffer();
+ in = new InputStreamReader(new FileInputStream(file));
+ char[] buffer = new char[4096];
+ for (int size = in.read(buffer); size >= 0; size = in.read(buffer)) {
+ configuration.append(buffer, 0, size);
+ }
+ return configuration.toString();
+ } catch (IOException e) {
+ if (in != null) {
+ try {
+ in.close();
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ }
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * Overwrites the content of logging configuration file.
+ *
+ * @param configuration the new content of logging configuration file
+ */
+ public synchronized void setConfiguration(final String configuration) throws IOException {
+ if (configuration == null || configuration.length() == 0) {
+ throw new IllegalArgumentException("configuration is null or an empty string");
+ }
+
+ File file = resolveConfigurationFile();
+ if (file == null) {
+ throw new IllegalStateException("Configuration file is null");
+ }
+
+ // make parent directory if necessary
+ if (!file.getParentFile().exists()) {
+ if (!file.getParentFile().mkdirs()) {
+ throw new IllegalStateException("Could not create parent directory of log configuration file: " + file.getParent());
+ }
+ }
+
+ // verify that the file is writable or does not exist
+ if (file.exists() && !file.canWrite()) {
+ throw new IllegalStateException("Configuration file is not writable: " + file.getAbsolutePath());
+ }
+
+ OutputStream out = null;
+ try {
+ out = new FileOutputStream(file);
+ out.write(configuration.getBytes());
+ } finally {
+ if (out != null) {
+ try {
+ out.close();
+ } catch (IOException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+ }
+ }
+ }
+
+ /**
* Force the logging system to reconfigure.
*/
public void reconfigure() {
- URL url = resolveURL();
- if (url == null) {
+ File file = resolveConfigurationFile();
+ if (file == null) {
return;
}
- URLConfigurator.configure(url);
+ try {
+ URLConfigurator.configure(file.toURL());
+ } catch (MalformedURLException e) {
+ e.printStackTrace();
+ }
+
+ // refresh the level info for every log
+ GeronimoLogFactory logFactory = (GeronimoLogFactory) LogFactory.getFactory();
+ Set instances = logFactory.getInstances();
+ for (Iterator iterator = instances.iterator(); iterator.hasNext();) {
+ Object log = iterator.next();
+ if (log instanceof CachingLog4jLog) {
+ ((CachingLog4jLog)log).updateLevelInfo();
+ }
+ }
}
private synchronized void schedule() {
@@ -235,26 +335,28 @@
}
public void doStart() {
+ LogFactory logFactory = LogFactory.getFactory();
+ if (!(logFactory instanceof GeronimoLogFactory)) {
+ throw new IllegalStateException("Commons log factory: " + logFactory + " is not a GeronimoLogFactory");
+ }
+
synchronized (this) {
+ timer = new Timer(true);
+
// Peroidally check the configuration file
schedule();
// Make sure the root Logger has loaded
- Logger.getRootLogger();
-
- // set the root logger level
- if (rootLoggerLevel != null) {
- Logger.getRootLogger().setLevel(rootLoggerLevel);
- }
+ LogManager.getRootLogger();
reconfigure();
}
// Change all of the loggers over to use log4j
- GeronimoLogFactory logFactory = (GeronimoLogFactory) LogFactory.getFactory();
- synchronized (logFactory) {
- if (!(logFactory.getLogFactory() instanceof CachingLog4jLogFactory)) {
- logFactory.setLogFactory(new CachingLog4jLogFactory());
+ GeronimoLogFactory geronimoLogFactory = (GeronimoLogFactory) logFactory;
+ synchronized (geronimoLogFactory) {
+ if (!(geronimoLogFactory.getLogFactory() instanceof CachingLog4jLogFactory)) {
+ geronimoLogFactory.setLogFactory(new CachingLog4jLogFactory());
}
}
@@ -279,9 +381,9 @@
doStop();
}
- private synchronized URL resolveURL() {
+ private synchronized File resolveConfigurationFile() {
try {
- return serverInfo.resolve(URI.create(configurationFile)).toURL();
+ return serverInfo.resolve(configurationFile);
} catch (Exception e) {
return null;
}
@@ -296,12 +398,12 @@
return;
}
- URL url = resolveURL();
- if (url == null) {
+ File file = resolveConfigurationFile();
+ if (file == null) {
return;
}
- URLConnection connection = url.openConnection();
- lastModified = connection.getLastModified();
+
+ lastModified = file.lastModified();
}
if (lastChanged < lastModified) {
@@ -345,17 +447,19 @@
static {
GBeanInfoBuilder infoFactory = new GBeanInfoBuilder(Log4jService.class);
- infoFactory.addAttribute("rootLoggerLevel", String.class, true);
infoFactory.addAttribute("configurationFile", String.class, true);
infoFactory.addAttribute("refreshPeriod", int.class, true);
+ infoFactory.addAttribute("configuration", String.class, false);
+ infoFactory.addAttribute("rootLoggerLevel", String.class, false);
infoFactory.addReference("ServerInfo", ServerInfo.class);
infoFactory.addOperation("reconfigure");
infoFactory.addOperation("setLoggerLevel", new Class[]{String.class, String.class});
infoFactory.addOperation("getLoggerLevel", new Class[]{String.class});
+ infoFactory.addOperation("getLoggerEffectiveLevel", new Class[]{String.class});
- infoFactory.setConstructor(new String[]{"rootLoggerLevel", "configurationFile", "refreshPeriod", "ServerInfo"});
+ infoFactory.setConstructor(new String[]{"configurationFile", "refreshPeriod", "ServerInfo"});
GBEAN_INFO = infoFactory.getBeanInfo();
}
Modified: geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/serverinfo/ServerInfo.java
==============================================================================
--- geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/serverinfo/ServerInfo.java (original)
+++ geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/serverinfo/ServerInfo.java Wed Nov 10 00:15:53 2004
@@ -71,6 +71,7 @@
if (!base.isDirectory()) {
throw new IllegalArgumentException("Base directory is not a directory: " + baseDirectory);
}
+ System.setProperty("geronimo.base.dir", base.getAbsolutePath());
}
public String resolvePath(final String filename) {