Author: ritchiem Date: Mon Apr 13 13:21:24 2009 New Revision: 764443 URL: http://svn.apache.org/viewvc?rev=764443&view=rev Log: QPID-1648: Add LoggingManagement and associated MBean to enable dynamic reloading of log4j file. Update sample log4js so that they aren't arbitrarily rewritten.
Patch from Robbie Gemmell <[email protected]> merged from trunk r747870 Added: qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/ - copied from r747870, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/ qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/management/ - copied from r747870, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/management/ qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/management/LoggingManagement.java - copied unchanged from r747870, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/management/LoggingManagement.java qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/management/LoggingManagementMBean.java - copied unchanged from r747870, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/management/LoggingManagementMBean.java qpid/branches/0.5-fix/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/ - copied from r747870, qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/ qpid/branches/0.5-fix/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/management/ - copied from r747870, qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/management/ qpid/branches/0.5-fix/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/management/LoggingManagementMBeanTest.java - copied unchanged from r747870, qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/management/LoggingManagementMBeanTest.java Modified: qpid/branches/0.5-fix/qpid/ (props changed) qpid/branches/0.5-fix/qpid/java/broker/etc/debug.log4j.xml qpid/branches/0.5-fix/qpid/java/broker/etc/log4j.xml qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java Propchange: qpid/branches/0.5-fix/qpid/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon Apr 13 13:21:24 2009 @@ -1 +1 @@ -/qpid/trunk/qpid:742626,743015,743028-743029,743304,743306,743311,743357,744113,747363,747367,747369-747370,747376,747783,747868-747869 +/qpid/trunk/qpid:742626,743015,743028-743029,743304,743306,743311,743357,744113,747363,747367,747369-747370,747376,747783,747868-747870 Modified: qpid/branches/0.5-fix/qpid/java/broker/etc/debug.log4j.xml URL: http://svn.apache.org/viewvc/qpid/branches/0.5-fix/qpid/java/broker/etc/debug.log4j.xml?rev=764443&r1=764442&r2=764443&view=diff ============================================================================== --- qpid/branches/0.5-fix/qpid/java/broker/etc/debug.log4j.xml (original) +++ qpid/branches/0.5-fix/qpid/java/broker/etc/debug.log4j.xml Mon Apr 13 13:21:24 2009 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- - - Licensed to the Apache Software Foundation (ASF) under one @@ -18,10 +18,10 @@ - specific language governing permissions and limitations - under the License. - - --> -<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> -<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> - <appender name="ArchivingFileAppender" class="org.apache.log4j.QpidCompositeRollingAppender"> + --><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> + +<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="null" threshold="null"> + <appender class="org.apache.log4j.QpidCompositeRollingAppender" name="ArchivingFileAppender"> <!-- Ensure that logs allways have the dateFormat set--> <param name="StaticLogFileName" value="false"/> <param name="File" value="${QPID_WORK}/log/${logprefix}qpid${logsuffix}.log"/> @@ -48,7 +48,7 @@ </layout> </appender> - <appender name="FileAppender" class="org.apache.log4j.FileAppender"> + <appender class="org.apache.log4j.FileAppender" name="FileAppender"> <param name="File" value="${QPID_WORK}/log/${logprefix}qpid${logsuffix}.log"/> <param name="Append" value="false"/> @@ -57,7 +57,7 @@ </layout> </appender> - <appender name="AlertFile" class="org.apache.log4j.FileAppender"> + <appender class="org.apache.log4j.FileAppender" name="AlertFile"> <param name="File" value="${QPID_WORK}/log/alert.log"/> <param name="Append" value="false"/> @@ -66,28 +66,28 @@ </layout> </appender> - <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> + <appender class="org.apache.log4j.ConsoleAppender" name="STDOUT"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> </layout> </appender> - <category name="Qpid.Broker"> + <category additivity="true" name="Qpid.Broker"> <priority value="debug"/> <appender-ref ref="AlertFile"/> <!--appender-ref ref="STDOUT"/--> </category> - <category name="org.apache.qpid.server.queue.AMQQueueMBean"> + <category additivity="true" name="org.apache.qpid.server.queue.AMQQueueMBean"> <priority value="info"/> <appender-ref ref="AlertFile"/> </category> <!-- Provide warnings to standard output --> - <!--category name="org.apache.qpid"> + <!--category additivity="true" name="org.apache.qpid"> <priority value="warn"/> <appender-ref ref="STDOUT"/> </category--> @@ -96,11 +96,11 @@ <!-- Additional level settings for debugging --> <!-- Each class in the Broker is a category that can have its logging level adjusted. --> <!-- This will provide more details if available about that classes processing. --> - <!--category name="org.apache.qpid.server.txn"> + <!--category additivity="true" name="org.apache.qpid.server.txn"> <priority value="debug"/> </category>--> - <!--<category name="org.apache.qpid.server.store"> + <!--<category additivity="true" name="org.apache.qpid.server.store"> <priority value="debug"/> </category--> Modified: qpid/branches/0.5-fix/qpid/java/broker/etc/log4j.xml URL: http://svn.apache.org/viewvc/qpid/branches/0.5-fix/qpid/java/broker/etc/log4j.xml?rev=764443&r1=764442&r2=764443&view=diff ============================================================================== --- qpid/branches/0.5-fix/qpid/java/broker/etc/log4j.xml (original) +++ qpid/branches/0.5-fix/qpid/java/broker/etc/log4j.xml Mon Apr 13 13:21:24 2009 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- - - Licensed to the Apache Software Foundation (ASF) under one @@ -18,10 +18,10 @@ - specific language governing permissions and limitations - under the License. - - --> -<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> -<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> - <appender name="ArchivingFileAppender" class="org.apache.log4j.QpidCompositeRollingAppender"> + --><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> + +<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="null" threshold="null"> + <appender class="org.apache.log4j.QpidCompositeRollingAppender" name="ArchivingFileAppender"> <!-- Ensure that logs allways have the dateFormat set--> <param name="StaticLogFileName" value="false"/> <param name="File" value="${QPID_WORK}/log/${logprefix}qpid${logsuffix}.log"/> @@ -48,7 +48,7 @@ </layout> </appender> - <appender name="FileAppender" class="org.apache.log4j.FileAppender"> + <appender class="org.apache.log4j.FileAppender" name="FileAppender"> <param name="File" value="${QPID_WORK}/log/${logprefix}qpid${logsuffix}.log"/> <param name="Append" value="false"/> @@ -57,25 +57,25 @@ </layout> </appender> - <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> + <appender class="org.apache.log4j.ConsoleAppender" name="STDOUT"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> </layout> </appender> - <!-- Qpid.Broker log is a special log category used to only useful broker startup details --> - <category name="Qpid.Broker"> + <!-- Qpid.Broker log is a special log category used to log only useful broker startup details --> + <category additivity="true" name="Qpid.Broker"> <priority value="debug"/> <appender-ref ref="STDOUT"/> </category> - <category name="org.apache.qpid.server.queue.AMQQueueMBean"> + <category additivity="true" name="org.apache.qpid.server.queue.AMQQueueMBean"> <priority value="info"/> </category> <!-- Provide warnings to standard output --> - <category name="org.apache.qpid"> + <category additivity="true" name="org.apache.qpid"> <priority value="warn"/> </category> @@ -83,7 +83,7 @@ <!-- Examples of additional logging settings --> <!-- Used to generate extra debug. See debug.log4j.xml --> - <!--<category name="org.apache.qpid.server.store"> + <!--<category additivity="true" name="org.apache.qpid.server.store"> <priority value="debug"/> </category--> Modified: qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java URL: http://svn.apache.org/viewvc/qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java?rev=764443&r1=764442&r2=764443&view=diff ============================================================================== --- qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java (original) +++ qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java Mon Apr 13 13:21:24 2009 @@ -42,10 +42,12 @@ import org.apache.mina.transport.socket.nio.SocketAcceptorConfig; import org.apache.mina.transport.socket.nio.SocketSessionConfig; import org.apache.mina.util.NewThreadExecutor; +import org.apache.qpid.AMQException; import org.apache.qpid.common.QpidProperties; import org.apache.qpid.framing.ProtocolVersion; import org.apache.qpid.pool.ReadWriteThreadModel; import org.apache.qpid.server.configuration.ServerConfiguration; +import org.apache.qpid.server.logging.management.LoggingManagementMBean; import org.apache.qpid.server.protocol.AMQPFastProtocolHandler; import org.apache.qpid.server.protocol.AMQPProtocolProvider; import org.apache.qpid.server.registry.ApplicationRegistry; @@ -232,16 +234,29 @@ String logConfig = commandLine.getOptionValue("l"); String logWatchConfig = commandLine.getOptionValue("w", "0"); + + int logWatchTime = 0; + try + { + logWatchTime = Integer.parseInt(logWatchConfig); + } + catch (NumberFormatException e) + { + System.err.println("Log watch configuration value of " + logWatchConfig + " is invalid. Must be " + + "a non-negative integer. Using default of zero (no watching configured"); + } + + File logConfigFile; if (logConfig != null) { - File logConfigFile = new File(logConfig); - configureLogging(logConfigFile, logWatchConfig); + logConfigFile = new File(logConfig); + configureLogging(logConfigFile, logWatchTime); } else { File configFileDirectory = configFile.getParentFile(); - File logConfigFile = new File(configFileDirectory, DEFAULT_LOG_CONFIG_FILENAME); - configureLogging(logConfigFile, logWatchConfig); + logConfigFile = new File(configFileDirectory, DEFAULT_LOG_CONFIG_FILENAME); + configureLogging(logConfigFile, logWatchTime); } ConfigurationFileApplicationRegistry config = new ConfigurationFileApplicationRegistry(configFile); @@ -249,6 +264,8 @@ updateManagementPort(serverConfig, commandLine.getOptionValue("m")); ApplicationRegistry.initialise(config); + + configureLoggingManagementMBean(logConfigFile, logWatchTime); //fixme .. use QpidProperties.getVersionString when we have fixed the classpath issues // that are causing the broker build to pick up the wrong properties file and hence say @@ -445,19 +462,8 @@ return ip; } - private void configureLogging(File logConfigFile, String logWatchConfig) + private void configureLogging(File logConfigFile, int logWatchTime) { - int logWatchTime = 0; - try - { - logWatchTime = Integer.parseInt(logWatchConfig); - } - catch (NumberFormatException e) - { - System.err.println("Log watch configuration value of " + logWatchConfig + " is invalid. Must be " - + "a non-negative integer. Using default of zero (no watching configured"); - } - if (logConfigFile.exists() && logConfigFile.canRead()) { System.out.println("Configuring logger using configuration file " + logConfigFile.getAbsolutePath()); @@ -481,4 +487,17 @@ } } + private void configureLoggingManagementMBean(File logConfigFile, int logWatchTime) throws Exception + { + LoggingManagementMBean blm = new LoggingManagementMBean(logConfigFile.getPath(),logWatchTime); + + try + { + blm.register(); + } + catch (AMQException e) + { + throw new InitException("Unable to initialise the Logging Management MBean: ", e); + } + } } Modified: qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java URL: http://svn.apache.org/viewvc/qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java?rev=764443&r1=764442&r2=764443&view=diff ============================================================================== --- qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java (original) +++ qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java Mon Apr 13 13:21:24 2009 @@ -20,6 +20,7 @@ */ package org.apache.qpid.server.management; +import org.apache.qpid.server.logging.management.LoggingManagement; import org.apache.qpid.server.security.access.management.UserManagement; import org.apache.log4j.Logger; @@ -153,7 +154,12 @@ if (args[0] instanceof ObjectName) { ObjectName object = (ObjectName) args[0]; - return UserManagement.TYPE.equals(object.getKeyProperty("type")); + + if (UserManagement.TYPE.equals(object.getKeyProperty("type")) + || LoggingManagement.TYPE.equals(object.getKeyProperty("type"))) + { + return true; + } } return false; --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:[email protected]
