You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2015/06/15 17:43:54 UTC
svn commit: r1685599 [1/3] - in /qpid/java/trunk:
bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/
broker-core/src/main/java/org/apache/qpid/server/logging/
broker-core/src/main/java/org/apache/qpid/server/model/ broker-core/src/ma...
Author: orudyy
Date: Mon Jun 15 15:43:53 2015
New Revision: 1685599
URL: http://svn.apache.org/r1685599
Log:
QPID-6591: [Java Broker] Introduce virtual host logging functionality
Added:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractLogger.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractNameAndLevelFilter.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractVirtualHostLogger.java
- copied, changed from r1685537, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/DenyAllFilter.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/FileLoggerSettings.java
- copied, changed from r1685537, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLoggerFilter.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LoggerFilter.java
- copied, changed from r1685537, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/DenyAllFilter.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LoggerNameAndLevelFilter.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/PrincipalLogEventFilter.java
- copied, changed from r1685537, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/DenyAllFilter.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RollingFileAppenderFactory.java
- copied, changed from r1685537, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostFileLogger.java
- copied, changed from r1685537, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLogger.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostFileLoggerImpl.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostNameAndLevelFilter.java
- copied, changed from r1685537, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/DenyAllFilter.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostNameAndLevelFilterImpl.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostLogger.java
- copied, changed from r1685537, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostLoggerFilter.java
- copied, changed from r1685537, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostPrincipal.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/LoggerNameAndLevelFilterTest.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/PrincipalLogEventFilterTest.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/RollingFileAppenderFactoryTest.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/VirtualHostLoggerTest.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/VirtualHostNameAndLevelFilterImplTest.java
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/VirtualHostLoggerRestTest.java
Removed:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/DenyAllFilter.java
Modified:
qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractBrokerLogger.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerConsoleLoggerImpl.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLogger.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerNameAndLevelFilterImpl.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/CompositeFilter.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LogRecorder.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLoggerFilter.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Model.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/QueueRunner.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/HouseKeepingTask.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerNameAndLevelFilterTest.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/CompositeFilterTest.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/BrokerTest.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/SecurityManagerTest.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/virtualhost/HouseKeepingTaskTest.java
qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0Test.java
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/VirtualHostACLTest.java
Modified: qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java?rev=1685599&r1=1685598&r2=1685599&view=diff
==============================================================================
--- qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java (original)
+++ qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java Mon Jun 15 15:43:53 2015
@@ -19,6 +19,7 @@
package org.apache.qpid.server.virtualhost.berkeleydb;
+import java.security.Principal;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -58,6 +59,7 @@ import org.apache.qpid.server.txn.DtxReg
import org.apache.qpid.server.virtualhost.ExchangeIsAlternateException;
import org.apache.qpid.server.virtualhost.HouseKeepingTask;
import org.apache.qpid.server.virtualhost.RequiredExchangeException;
+import org.apache.qpid.server.virtualhost.VirtualHostPrincipal;
/**
Object that represents the VirtualHost whilst the VirtualHostNode is in the replica role. The
@@ -68,6 +70,7 @@ public class BDBHAReplicaVirtualHostImpl
{
private final StatisticsCounter _messagesDelivered, _dataDelivered, _messagesReceived, _dataReceived;
private final Broker<?> _broker;
+ private final VirtualHostPrincipal _principal;
@ManagedAttributeField
private boolean _queue_deadLetterQueueEnabled;
@@ -108,6 +111,7 @@ public class BDBHAReplicaVirtualHostImpl
_dataDelivered = new StatisticsCounter("bytes-delivered-" + getName());
_messagesReceived = new StatisticsCounter("messages-received-" + getName());
_dataReceived = new StatisticsCounter("bytes-received-" + getName());
+ _principal = new VirtualHostPrincipal(this);
setState(State.UNAVAILABLE);
}
@@ -531,6 +535,12 @@ public class BDBHAReplicaVirtualHostImpl
return localAddress;
}
+ @Override
+ public Principal getPrincipal()
+ {
+ return _principal;
+ }
+
private void throwUnsupportedForReplica()
{
throw new IllegalStateException("The virtual host state of " + getState()
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractBrokerLogger.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractBrokerLogger.java?rev=1685599&r1=1685598&r2=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractBrokerLogger.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractBrokerLogger.java Mon Jun 15 15:43:53 2015
@@ -20,167 +20,24 @@
*/
package org.apache.qpid.server.logging;
+import java.util.Collection;
import java.util.Map;
-
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.Appender;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
-import org.apache.qpid.server.model.AbstractConfiguredObject;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.BrokerLogger;
import org.apache.qpid.server.model.BrokerLoggerFilter;
-import org.apache.qpid.server.model.ConfigurationChangeListener;
-import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.StateTransition;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-public abstract class AbstractBrokerLogger<X extends AbstractBrokerLogger<X>> extends AbstractConfiguredObject<X> implements BrokerLogger<X>, ConfigurationChangeListener
+public abstract class AbstractBrokerLogger<X extends AbstractBrokerLogger<X>> extends AbstractLogger<X> implements BrokerLogger<X>
{
- protected CompositeFilter _compositeFilter = new CompositeFilter();
-
protected AbstractBrokerLogger(Map<String, Object> attributes, Broker<?> broker)
{
- super(parentsMap(broker), attributes);
- }
-
- protected CompositeFilter getCompositeFilter()
- {
- return _compositeFilter;
- }
-
- @Override
- protected void postResolveChildren()
- {
- super.postResolveChildren();
-
- ch.qos.logback.classic.Logger rootLogger = getRootLogger();
- final Appender<ILoggingEvent> appender = asAppender();
- rootLogger.addAppender(appender);
- appender.start();
-
- StartupAppender startupAppender = (StartupAppender) rootLogger.getAppender(StartupAppender.class.getName());
- if (startupAppender != null)
- {
- startupAppender.replayAccumulatedEvents(appender);
- }
- }
-
- @Override
- public void stopLogging()
- {
- Appender appender = getLoggerAppender();
- appender.stop();
- getRootLogger().detachAppender(getName());
- }
-
- @StateTransition(currentState = {State.ACTIVE, State.UNINITIALIZED, State.ERRORED, State.STOPPED}, desiredState = State.DELETED)
- private ListenableFuture<Void> doDelete()
- {
- final SettableFuture<Void> returnVal = SettableFuture.create();
- closeAsync().addListener(new Runnable()
- {
- @Override
- public void run()
- {
- setState(State.DELETED);
- stopLogging();
- returnVal.set(null);
- }
- }, getTaskExecutor().getExecutor());
- return returnVal;
- }
-
- @StateTransition( currentState = { State.ERRORED, State.UNINITIALIZED, State.STOPPED }, desiredState = State.ACTIVE )
- private ListenableFuture<Void> doActivate()
- {
- setState(State.ACTIVE);
- return Futures.immediateFuture(null);
- }
-
- private Appender<ILoggingEvent> getLoggerAppender()
- {
- return getRootLogger().getAppender(getName());
- }
-
- private ch.qos.logback.classic.Logger getRootLogger()
- {
- return (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
+ super(attributes, broker);
}
@Override
- protected <C extends ConfiguredObject> ListenableFuture<C> addChildAsync(Class<C> childClass, Map<String, Object> attributes, ConfiguredObject... otherParents)
+ protected Collection<? extends LoggerFilter> getLoggerFilters()
{
- final ListenableFuture<C> filterFuture = getObjectFactory().createAsync(childClass, attributes, this);
- doAfter(filterFuture, new CallableWithArgument<ListenableFuture<C>, C>()
- {
- @Override
- public ListenableFuture<C> call(final C child) throws Exception
- {
- BrokerLoggerFilter<?> filter = (BrokerLoggerFilter) child;
- filter.addChangeListener(AbstractBrokerLogger.this);
- getCompositeFilter().addFilter(filter);
- return Futures.immediateFuture(child);
- }
- });
- return filterFuture;
+ return getChildren(BrokerLoggerFilter.class);
}
- @Override
- public void stateChanged(ConfiguredObject<?> object, State oldState, State newState)
- {
- if (newState == State.DELETED && object instanceof BrokerLoggerFilter)
- {
- getCompositeFilter().removeFilter((BrokerLoggerFilter)object);
- object.removeChangeListener(this);
- }
- }
-
- @Override
- public void childAdded(ConfiguredObject<?> object, ConfiguredObject<?> child)
- {
- // no-op
- }
-
- @Override
- public void childRemoved(ConfiguredObject<?> object, ConfiguredObject<?> child)
- {
- // no-op
- }
-
- @Override
- public void attributeSet(ConfiguredObject<?> object, String attributeName, Object oldAttributeValue, Object newAttributeValue)
- {
- // no-op
- }
-
- @Override
- public void bulkChangeStart(ConfiguredObject<?> object)
- {
- // no-op
- }
-
- @Override
- public void bulkChangeEnd(ConfiguredObject<?> object)
- {
- // no-op
- }
-
- protected void initializeAppender(Appender<ILoggingEvent> appender)
- {
- ch.qos.logback.classic.Logger rootLogger = getRootLogger();
- LoggerContext loggerContext = rootLogger.getLoggerContext();
-
- appender.setContext(loggerContext);
-
- CompositeFilter compositeFilter = getCompositeFilter();
- compositeFilter.addFilters(getChildren(BrokerLoggerFilter.class));
- appender.addFilter(compositeFilter);
- appender.setName(getName());
- }
}
Added: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractLogger.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractLogger.java?rev=1685599&view=auto
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractLogger.java (added)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractLogger.java Mon Jun 15 15:43:53 2015
@@ -0,0 +1,171 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.qpid.server.logging;
+
+import java.util.Collection;
+import java.util.Map;
+
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.Appender;
+import ch.qos.logback.core.Context;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.SettableFuture;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.qpid.server.model.AbstractConfiguredObject;
+import org.apache.qpid.server.model.ConfigurationChangeListener;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.StateTransition;
+
+public abstract class AbstractLogger<X extends AbstractLogger<X>> extends AbstractConfiguredObject<X>
+{
+ private final CompositeFilter _compositeFilter = new CompositeFilter();
+ private final static ch.qos.logback.classic.Logger ROOT_LOGGER = ((ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME));
+
+ protected AbstractLogger(Map<String, Object> attributes, ConfiguredObject<?> parent)
+ {
+ super(parentsMap(parent), attributes);
+
+ addChangeListener(new FilterListener());
+ }
+
+ @Override
+ protected void postResolveChildren()
+ {
+ super.postResolveChildren();
+
+ LoggerContext loggerContext = ROOT_LOGGER.getLoggerContext();
+
+ Appender<ILoggingEvent> appender = asAppender(loggerContext);
+ appender.setName(getName());
+ appender.setContext(loggerContext);
+
+ for(LoggerFilter filter : getLoggerFilters())
+ {
+ _compositeFilter.addFilter(filter);
+ }
+ appender.addFilter(_compositeFilter);
+
+ ROOT_LOGGER.addAppender(appender);
+ appender.start();
+
+ // TODO generalise for virtualhost too
+ StartupAppender startupAppender = (StartupAppender) ROOT_LOGGER.getAppender(StartupAppender.class.getName());
+ if (startupAppender != null)
+ {
+ startupAppender.replayAccumulatedEvents(appender);
+ }
+ }
+
+ protected abstract Appender<ILoggingEvent> asAppender(Context context);
+
+ protected abstract Collection<? extends LoggerFilter> getLoggerFilters();
+
+ @StateTransition( currentState = { State.ERRORED, State.UNINITIALIZED, State.STOPPED }, desiredState = State.ACTIVE )
+ private ListenableFuture<Void> doActivate()
+ {
+ setState(State.ACTIVE);
+ return Futures.immediateFuture(null);
+ }
+
+ @StateTransition(currentState = {State.ACTIVE, State.UNINITIALIZED, State.ERRORED, State.STOPPED}, desiredState = State.DELETED)
+ private ListenableFuture<Void> doDelete()
+ {
+ final SettableFuture<Void> returnVal = SettableFuture.create();
+ closeAsync().addListener(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ deleted();
+ setState(State.DELETED);
+ stopLogging();
+ returnVal.set(null);
+ }
+ }, getTaskExecutor().getExecutor());
+ return returnVal;
+ }
+
+ @Override
+ protected <C extends ConfiguredObject> ListenableFuture<C> addChildAsync(Class<C> childClass, Map<String, Object> attributes, ConfiguredObject... otherParents)
+ {
+ return getObjectFactory().createAsync(childClass, attributes, this);
+ }
+
+ public void stopLogging()
+ {
+ Appender appender = ROOT_LOGGER.getAppender(getName());
+ if (appender != null)
+ {
+ appender.stop();
+ ROOT_LOGGER.detachAppender(appender);
+ }
+ }
+
+ private class FilterListener implements ConfigurationChangeListener
+ {
+
+ @Override
+ public void childAdded(final ConfiguredObject<?> object, final ConfiguredObject<?> child)
+ {
+ if (child instanceof LoggerFilter)
+ {
+ _compositeFilter.addFilter((LoggerFilter) child);
+ }
+ }
+
+ @Override
+ public void childRemoved(final ConfiguredObject<?> object, final ConfiguredObject<?> child)
+ {
+ if (child instanceof LoggerFilter)
+ {
+ _compositeFilter.removeFilter((LoggerFilter) child);
+ }
+ }
+
+ @Override
+ public void stateChanged(final ConfiguredObject<?> object, final State oldState, final State newState)
+ {
+ }
+
+ @Override
+ public void attributeSet(final ConfiguredObject<?> object,
+ final String attributeName,
+ final Object oldAttributeValue,
+ final Object newAttributeValue)
+ {
+ }
+
+ @Override
+ public void bulkChangeStart(final ConfiguredObject<?> object)
+ {
+ }
+
+ @Override
+ public void bulkChangeEnd(final ConfiguredObject<?> object)
+ {
+ }
+ }
+}
Added: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractNameAndLevelFilter.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractNameAndLevelFilter.java?rev=1685599&view=auto
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractNameAndLevelFilter.java (added)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractNameAndLevelFilter.java Mon Jun 15 15:43:53 2015
@@ -0,0 +1,90 @@
+package org.apache.qpid.server.logging;
+
+import java.util.Map;
+import java.util.Set;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.filter.Filter;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.SettableFuture;
+
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.model.AbstractConfiguredObject;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.ManagedAttributeField;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.StateTransition;
+
+public abstract class AbstractNameAndLevelFilter<X extends AbstractNameAndLevelFilter<X>> extends AbstractConfiguredObject<X>
+{
+ @ManagedAttributeField
+ private String _loggerName;
+ @ManagedAttributeField(afterSet = "logLevelAfterSet")
+ private LogLevel _level;
+
+ private LoggerNameAndLevelFilter _filter;
+
+ protected AbstractNameAndLevelFilter(final Map<Class<? extends ConfiguredObject>, ConfiguredObject<?>> parents,
+ Map<String, Object> attributes)
+ {
+ super(parents, attributes);
+ }
+
+ @Override
+ protected void postResolve()
+ {
+ super.postResolve();
+ _filter = new LoggerNameAndLevelFilter(getLoggerName(), Level.toLevel(getLevel().name()));
+ }
+
+
+ public String getLoggerName()
+ {
+ return _loggerName;
+ }
+
+ public LogLevel getLevel()
+ {
+ return _level;
+ }
+
+ private void logLevelAfterSet()
+ {
+ if (_filter != null)
+ {
+ _filter.setLevel(Level.toLevel(getLevel().name()));
+ }
+ }
+
+ public Filter<ILoggingEvent> asFilter()
+ {
+ return _filter;
+ }
+
+ @StateTransition( currentState = { State.ACTIVE, State.ERRORED, State.UNINITIALIZED }, desiredState = State.DELETED )
+ private ListenableFuture<Void> doDelete()
+ {
+ final SettableFuture<Void> returnVal = SettableFuture.create();
+ closeAsync().addListener(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ deleted();
+ setState(State.DELETED);
+ returnVal.set(null);
+
+ }
+ }, getTaskExecutor().getExecutor());
+ return returnVal;
+ }
+
+ @StateTransition( currentState = { State.ERRORED, State.UNINITIALIZED }, desiredState = State.ACTIVE )
+ private ListenableFuture<Void> doActivate()
+ {
+ setState(State.ACTIVE);
+ return Futures.immediateFuture(null);
+ }
+}
Copied: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractVirtualHostLogger.java (from r1685537, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/DenyAllFilter.java)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractVirtualHostLogger.java?p2=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractVirtualHostLogger.java&p1=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/DenyAllFilter.java&r1=1685537&r2=1685599&rev=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/DenyAllFilter.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractVirtualHostLogger.java Mon Jun 15 15:43:53 2015
@@ -20,26 +20,25 @@
*/
package org.apache.qpid.server.logging;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.filter.Filter;
-import ch.qos.logback.core.spi.FilterReply;
+import java.util.Collection;
+import java.util.Map;
-public class DenyAllFilter extends Filter<ILoggingEvent>
-{
- private static final Filter<ILoggingEvent> INSTANCE = new DenyAllFilter();
+import org.apache.qpid.server.model.VirtualHost;
+import org.apache.qpid.server.model.VirtualHostLogger;
+import org.apache.qpid.server.model.VirtualHostLoggerFilter;
- private DenyAllFilter()
- {
- }
+public abstract class AbstractVirtualHostLogger <X extends AbstractVirtualHostLogger<X>> extends AbstractLogger<X> implements VirtualHostLogger<X>
+{
- public static Filter<ILoggingEvent> getInstance()
+ protected AbstractVirtualHostLogger(Map<String, Object> attributes, VirtualHost<?,?,?> virtualHost)
{
- return INSTANCE;
+ super(attributes, virtualHost);
}
- public FilterReply decide(final ILoggingEvent event)
+ @Override
+ protected Collection<? extends LoggerFilter> getLoggerFilters()
{
- return FilterReply.DENY;
+ return getChildren(VirtualHostLoggerFilter.class);
}
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerConsoleLoggerImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerConsoleLoggerImpl.java?rev=1685599&r1=1685598&r2=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerConsoleLoggerImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerConsoleLoggerImpl.java Mon Jun 15 15:43:53 2015
@@ -26,8 +26,7 @@ import ch.qos.logback.classic.encoder.Pa
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.Appender;
import ch.qos.logback.core.ConsoleAppender;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import ch.qos.logback.core.Context;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ManagedAttributeField;
@@ -51,18 +50,18 @@ public class BrokerConsoleLoggerImpl ext
}
@Override
- public Appender<ILoggingEvent> asAppender()
+ public Appender<ILoggingEvent> asAppender(Context context)
{
ConsoleAppender<ILoggingEvent> consoleAppender = new ConsoleAppender<>();
- initializeAppender(consoleAppender);
final PatternLayoutEncoder encoder = new PatternLayoutEncoder();
encoder.setPattern(getLayout());
- encoder.setContext(consoleAppender.getContext());
+ encoder.setContext(context);
encoder.start();
consoleAppender.setEncoder(encoder);
return consoleAppender;
}
+
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLogger.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLogger.java?rev=1685599&r1=1685598&r2=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLogger.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLogger.java Mon Jun 15 15:43:53 2015
@@ -47,9 +47,6 @@ public interface BrokerFileLogger<X exte
@ManagedAttribute( defaultValue = "100mb")
String getMaxFileSize();
- @ManagedAttribute( defaultValue = "false" )
- boolean isSafeMode();
-
@ManagedAttribute(defaultValue = "%d %-5p [%t] \\(%c{2}\\) - %m%n")
String getLayout();
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java?rev=1685599&r1=1685598&r2=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java Mon Jun 15 15:43:53 2015
@@ -20,27 +20,17 @@
*/
package org.apache.qpid.server.logging;
-import java.io.File;
import java.util.Map;
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.Appender;
import ch.qos.logback.core.Context;
-import ch.qos.logback.core.rolling.FixedWindowRollingPolicy;
-import ch.qos.logback.core.rolling.RollingFileAppender;
-import ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP;
-import ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy;
-import ch.qos.logback.core.rolling.TimeBasedRollingPolicy;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ManagedAttributeField;
import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
-public class BrokerFileLoggerImpl extends AbstractBrokerLogger<BrokerFileLoggerImpl> implements BrokerFileLogger<BrokerFileLoggerImpl>
+public class BrokerFileLoggerImpl extends AbstractBrokerLogger<BrokerFileLoggerImpl> implements BrokerFileLogger<BrokerFileLoggerImpl>, FileLoggerSettings
{
@ManagedAttributeField
private String _layout;
@@ -56,8 +46,6 @@ public class BrokerFileLoggerImpl extend
private int _maxHistory;
@ManagedAttributeField
private String _maxFileSize;
- @ManagedAttributeField
- private boolean _safeMode;
@ManagedObjectFactoryConstructor
protected BrokerFileLoggerImpl(final Map<String, Object> attributes, Broker<?> broker)
@@ -102,147 +90,15 @@ public class BrokerFileLoggerImpl extend
}
@Override
- public boolean isSafeMode()
- {
- return _safeMode;
- }
-
- @Override
public String getLayout()
{
return _layout;
}
@Override
- public Appender<ILoggingEvent> asAppender()
+ public Appender<ILoggingEvent> asAppender(Context loggerContext)
{
- RollingFileAppender<ILoggingEvent> appender = new RollingFileAppender<>();
- appender.setFile(getFileName());
- appender.setAppend(true);
-
- initializeAppender(appender);
- Context loggerContext = appender.getContext();
-
- if(isRollDaily())
- {
- DailyTriggeringPolicy triggeringPolicy = new DailyTriggeringPolicy();
- triggeringPolicy.setContext(loggerContext);
- TimeBasedRollingPolicy<ILoggingEvent> rollingPolicy = new TimeBasedRollingPolicy<>();
- rollingPolicy.setContext(loggerContext);
- rollingPolicy.setMaxHistory(getMaxHistory());
- rollingPolicy.setTimeBasedFileNamingAndTriggeringPolicy(triggeringPolicy);
- rollingPolicy.setFileNamePattern(getFileName() + ".%d{yyyy-MM-dd}.%i" + (isCompressOldFiles()
- ? ".gz"
- : ""));
- appender.setRollingPolicy(rollingPolicy);
- rollingPolicy.setParent(appender);
- rollingPolicy.start();
- }
- else
- {
- SizeTriggeringPolicy sizeTriggeringPolicy = new SizeTriggeringPolicy();
- sizeTriggeringPolicy.setContext(loggerContext);
- SimpleRollingPolicy rollingPolicy = new SimpleRollingPolicy();
- rollingPolicy.setContext(loggerContext);
- rollingPolicy.setFileNamePattern(getFileName() + ".%i" + (isCompressOldFiles() ? ".gz" : ""));
- appender.setRollingPolicy(rollingPolicy);
- appender.setTriggeringPolicy(sizeTriggeringPolicy);
- rollingPolicy.setParent(appender);
- rollingPolicy.start();
- sizeTriggeringPolicy.start();
- }
- final PatternLayoutEncoder encoder = new PatternLayoutEncoder();
- encoder.setPattern("%d %-5p [%t] \\(%c{2}\\) - %m%n");
- encoder.setContext(loggerContext);
- encoder.start();
- appender.setEncoder(encoder);
- return appender;
- }
-
- private class DailyTriggeringPolicy extends SizeAndTimeBasedFNATP<ILoggingEvent>
- {
- private final boolean _rollOnRestart;
- private boolean _isFirst = true;
-
- public DailyTriggeringPolicy()
- {
- _rollOnRestart = isRollOnRestart();
- setMaxFileSize(getMaxFileSize());
-
- }
-
- @Override
- protected void computeNextCheck()
- {
- super.computeNextCheck();
- if (_rollOnRestart && _isFirst)
- {
- _isFirst = false;
- nextCheck = 0l;
- }
- }
-
- @Override
- public boolean isTriggeringEvent(final File activeFile, final ILoggingEvent event)
- {
- if (_rollOnRestart && _isFirst)
- {
- _isFirst = false;
- return activeFile.exists() && activeFile.length() != 0l;
- }
- else
- {
- return super.isTriggeringEvent(activeFile, event);
- }
- }
-
- }
-
-
- private class SizeTriggeringPolicy extends SizeBasedTriggeringPolicy<ILoggingEvent>
- {
- private final boolean _rollOnRestart;
- private boolean _isFirst = true;
-
- public SizeTriggeringPolicy()
- {
- _rollOnRestart = isRollOnRestart();
- setMaxFileSize(getMaxFileSize());
-
- }
-
- @Override
- public boolean isTriggeringEvent(final File activeFile, final ILoggingEvent event)
- {
- if (_rollOnRestart && _isFirst)
- {
- _isFirst = false;
- return activeFile.exists() && activeFile.length() != 0l;
- }
- else
- {
- return super.isTriggeringEvent(activeFile, event);
- }
- }
-
- }
-
- private class SimpleRollingPolicy extends FixedWindowRollingPolicy
- {
- private int _maxFiles;
-
- public SimpleRollingPolicy()
- {
- _maxFiles = getMaxHistory();
- setMaxIndex(getMaxHistory());
- setMinIndex(1);
- }
-
- @Override
- protected int getMaxWindowSize()
- {
- return _maxFiles;
- }
+ return new RollingFileAppenderFactory().createRollingFileAppender(this, loggerContext);
}
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java?rev=1685599&r1=1685598&r2=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java Mon Jun 15 15:43:53 2015
@@ -22,11 +22,9 @@ package org.apache.qpid.server.logging;
import java.util.Map;
-import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.Appender;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import ch.qos.logback.core.Context;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ManagedAttributeField;
@@ -51,10 +49,9 @@ public class BrokerMemoryLoggerImpl exte
}
@Override
- public Appender<ILoggingEvent> asAppender()
+ public Appender<ILoggingEvent> asAppender(Context context)
{
- final RecordEventAppender appender = new RecordEventAppender(getMaxRecords());
- initializeAppender(appender);
- return appender;
+ return new RecordEventAppender(getMaxRecords());
}
+
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerNameAndLevelFilterImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerNameAndLevelFilterImpl.java?rev=1685599&r1=1685598&r2=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerNameAndLevelFilterImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerNameAndLevelFilterImpl.java Mon Jun 15 15:43:53 2015
@@ -23,33 +23,14 @@ package org.apache.qpid.server.logging;
import java.util.Map;
import java.util.Set;
-import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.Logger;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.filter.Filter;
-import ch.qos.logback.core.spi.FilterReply;
-
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
-import org.apache.qpid.server.model.AbstractConfiguredObject;
import org.apache.qpid.server.model.BrokerLogger;
import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.ManagedAttributeField;
import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
-import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.StateTransition;
-public class BrokerNameAndLevelFilterImpl extends AbstractConfiguredObject<BrokerNameAndLevelFilterImpl>
+public class BrokerNameAndLevelFilterImpl extends AbstractNameAndLevelFilter<BrokerNameAndLevelFilterImpl>
implements BrokerNameAndLevelFilter<BrokerNameAndLevelFilterImpl>
{
- @ManagedAttributeField
- private String _loggerName;
- @ManagedAttributeField(afterSet = "logLevelAfterSet")
- private LogLevel _level;
-
- private volatile Level _logbackLevel;
@ManagedObjectFactoryConstructor
protected BrokerNameAndLevelFilterImpl(final Map<String, Object> attributes, BrokerLogger<?> logger)
@@ -63,91 +44,12 @@ public class BrokerNameAndLevelFilterImp
super.validateChange(proxyForValidation, changedAttributes);
BrokerNameAndLevelFilter proxyFilter = (BrokerNameAndLevelFilter)proxyForValidation;
if (changedAttributes.contains(LOGGER_NAME) &&
- ((getLoggerName() != null && !getLoggerName().equals(proxyFilter.getLoggerName())) ||
- (getLoggerName() == null && proxyFilter.getLoggerName() != null)))
+ ((getLoggerName() != null && !getLoggerName().equals(proxyFilter.getLoggerName())) ||
+ (getLoggerName() == null && proxyFilter.getLoggerName() != null)))
{
throw new IllegalConfigurationException("Attribute '" + LOGGER_NAME + " cannot be changed");
}
}
- @Override
- public String getLoggerName()
- {
- return _loggerName;
- }
-
- @Override
- public LogLevel getLevel()
- {
- return _level;
- }
-
- private void logLevelAfterSet()
- {
- _logbackLevel = Level.toLevel(getLevel().name());
- }
- @Override
- public Filter<ILoggingEvent> asFilter()
- {
- final String loggerName = getLoggerName();
- if("".equals(loggerName) || Logger.ROOT_LOGGER_NAME.equals(loggerName))
- {
- return new Filter<ILoggingEvent>()
- {
- @Override
- public FilterReply decide(final ILoggingEvent event)
- {
- return event.getLevel().isGreaterOrEqual(_logbackLevel) ? FilterReply.ACCEPT : FilterReply.NEUTRAL;
- }
- };
- }
- else if(loggerName.endsWith(".*"))
- {
- final String prefixName = loggerName.substring(0,loggerName.length()-2);
- return new Filter<ILoggingEvent>()
- {
- @Override
- public FilterReply decide(final ILoggingEvent event)
- {
- return event.getLevel().isGreaterOrEqual(_logbackLevel) && event.getLoggerName().startsWith(prefixName) ? FilterReply.ACCEPT : FilterReply.NEUTRAL;
- }
- };
- }
- else
- {
- return new Filter<ILoggingEvent>()
- {
- @Override
- public FilterReply decide(final ILoggingEvent event)
- {
- return event.getLevel().isGreaterOrEqual(_logbackLevel) && event.getLoggerName().equals(loggerName) ? FilterReply.ACCEPT : FilterReply.NEUTRAL;
- }
- };
- }
- }
-
- @StateTransition( currentState = { State.ACTIVE, State.ERRORED, State.UNINITIALIZED }, desiredState = State.DELETED )
- private ListenableFuture<Void> doDelete()
- {
- final SettableFuture<Void> returnVal = SettableFuture.create();
- closeAsync().addListener(new Runnable()
- {
- @Override
- public void run()
- {
- setState(State.DELETED);
- returnVal.set(null);
-
- }
- }, getTaskExecutor().getExecutor());
- return returnVal;
- }
-
- @StateTransition( currentState = { State.ERRORED, State.UNINITIALIZED }, desiredState = State.ACTIVE )
- private ListenableFuture<Void> doActivate()
- {
- setState(State.ACTIVE);
- return Futures.immediateFuture(null);
- }
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/CompositeFilter.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/CompositeFilter.java?rev=1685599&r1=1685598&r2=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/CompositeFilter.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/CompositeFilter.java Mon Jun 15 15:43:53 2015
@@ -34,22 +34,22 @@ public class CompositeFilter extends Fil
{
private List<Filter<ILoggingEvent>> _filterList = new CopyOnWriteArrayList<>();
- public void addFilter(BrokerLoggerFilter filter)
+ public void addFilter(LoggerFilter filter)
{
Filter f = filter.asFilter();
f.setName(filter.getName());
_filterList.add(f);
}
- public void addFilters(Collection<BrokerLoggerFilter> filters)
+ public void addFilters(Collection<LoggerFilter> filters)
{
- for(BrokerLoggerFilter<?> filter : filters)
+ for(LoggerFilter filter : filters)
{
addFilter(filter);
}
}
- public void removeFilter(BrokerLoggerFilter filter)
+ public void removeFilter(LoggerFilter filter)
{
Iterator<Filter<ILoggingEvent>> it = _filterList.iterator();
while(it.hasNext())
Copied: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/FileLoggerSettings.java (from r1685537, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLoggerFilter.java)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/FileLoggerSettings.java?p2=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/FileLoggerSettings.java&p1=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLoggerFilter.java&r1=1685537&r2=1685599&rev=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLoggerFilter.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/FileLoggerSettings.java Mon Jun 15 15:43:53 2015
@@ -18,13 +18,21 @@
* under the License.
*
*/
-package org.apache.qpid.server.model;
+package org.apache.qpid.server.logging;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.filter.Filter;
-
-@ManagedObject
-public interface BrokerLoggerFilter<X extends BrokerLoggerFilter<X>> extends ConfiguredObject<X>
+public interface FileLoggerSettings
{
- Filter<ILoggingEvent> asFilter();
+ String getFileName();
+
+ boolean isRollDaily();
+
+ boolean isRollOnRestart();
+
+ boolean isCompressOldFiles();
+
+ int getMaxHistory();
+
+ String getMaxFileSize();
+
+ String getLayout();
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LogRecorder.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LogRecorder.java?rev=1685599&r1=1685598&r2=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LogRecorder.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LogRecorder.java Mon Jun 15 15:43:53 2015
@@ -29,11 +29,9 @@ public class LogRecorder implements Iter
private final RecordEventAppender _eventAppender;
- public void closeLogRecorder()
+ public LogRecorder(RecordEventAppender eventAppender)
{
- Logger rootLogger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
- rootLogger.detachAppender(_eventAppender);
- _eventAppender.stop();
+ _eventAppender = eventAppender;
}
@Override
@@ -43,9 +41,4 @@ public class LogRecorder implements Iter
return buffer != null ? buffer.asList().iterator() : Collections.<LogRecord>emptyIterator();
}
- public LogRecorder(RecordEventAppender eventAppender)
- {
- _eventAppender = eventAppender;
- }
-
}
Copied: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LoggerFilter.java (from r1685537, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/DenyAllFilter.java)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LoggerFilter.java?p2=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LoggerFilter.java&p1=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/DenyAllFilter.java&r1=1685537&r2=1685599&rev=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/DenyAllFilter.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LoggerFilter.java Mon Jun 15 15:43:53 2015
@@ -22,24 +22,10 @@ package org.apache.qpid.server.logging;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.filter.Filter;
-import ch.qos.logback.core.spi.FilterReply;
-public class DenyAllFilter extends Filter<ILoggingEvent>
+public interface LoggerFilter
{
- private static final Filter<ILoggingEvent> INSTANCE = new DenyAllFilter();
-
- private DenyAllFilter()
- {
- }
-
- public static Filter<ILoggingEvent> getInstance()
- {
- return INSTANCE;
- }
-
- public FilterReply decide(final ILoggingEvent event)
- {
- return FilterReply.DENY;
- }
+ Filter<ILoggingEvent> asFilter();
+ String getName();
}
Added: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LoggerNameAndLevelFilter.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LoggerNameAndLevelFilter.java?rev=1685599&view=auto
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LoggerNameAndLevelFilter.java (added)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LoggerNameAndLevelFilter.java Mon Jun 15 15:43:53 2015
@@ -0,0 +1,100 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.qpid.server.logging;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.filter.Filter;
+import ch.qos.logback.core.spi.FilterReply;
+
+public class LoggerNameAndLevelFilter extends Filter<ILoggingEvent>
+{
+ private final Filter<ILoggingEvent> _filter;
+ private final String _loggerName;
+ private volatile Level _level;
+
+ public LoggerNameAndLevelFilter(String loggerName, Level level)
+ {
+ _level = level;
+ _loggerName = loggerName;
+ _filter = createFilter(loggerName);
+ }
+
+ @Override
+ public FilterReply decide(ILoggingEvent event)
+ {
+ return _filter.decide(event);
+ }
+
+ public void setLevel(Level level)
+ {
+ _level = level;
+ }
+
+ public Level getLevel()
+ {
+ return _level;
+ }
+
+ public String getLoggerName()
+ {
+ return _loggerName;
+ }
+
+ private Filter<ILoggingEvent> createFilter(final String loggerName)
+ {
+ if(loggerName == null || "".equals(loggerName) || Logger.ROOT_LOGGER_NAME.equals(loggerName))
+ {
+ return new Filter<ILoggingEvent>()
+ {
+ @Override
+ public FilterReply decide(final ILoggingEvent event)
+ {
+ return event.getLevel().isGreaterOrEqual(_level) ? FilterReply.ACCEPT : FilterReply.NEUTRAL;
+ }
+ };
+ }
+ else if(loggerName.endsWith(".*"))
+ {
+ final String prefixName = loggerName.substring(0,loggerName.length()-2);
+ return new Filter<ILoggingEvent>()
+ {
+ @Override
+ public FilterReply decide(final ILoggingEvent event)
+ {
+ return event.getLevel().isGreaterOrEqual(_level) && event.getLoggerName().startsWith(prefixName) ? FilterReply.ACCEPT : FilterReply.NEUTRAL;
+ }
+ };
+ }
+ else
+ {
+ return new Filter<ILoggingEvent>()
+ {
+ @Override
+ public FilterReply decide(final ILoggingEvent event)
+ {
+ return event.getLevel().isGreaterOrEqual(_level) && event.getLoggerName().equals(loggerName) ? FilterReply.ACCEPT : FilterReply.NEUTRAL;
+ }
+ };
+ }
+ }
+}
Copied: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/PrincipalLogEventFilter.java (from r1685537, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/DenyAllFilter.java)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/PrincipalLogEventFilter.java?p2=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/PrincipalLogEventFilter.java&p1=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/DenyAllFilter.java&r1=1685537&r2=1685599&rev=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/DenyAllFilter.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/PrincipalLogEventFilter.java Mon Jun 15 15:43:53 2015
@@ -20,26 +20,33 @@
*/
package org.apache.qpid.server.logging;
+import java.security.AccessController;
+import java.security.Principal;
+
+import javax.security.auth.Subject;
+
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.filter.Filter;
import ch.qos.logback.core.spi.FilterReply;
-public class DenyAllFilter extends Filter<ILoggingEvent>
-{
- private static final Filter<ILoggingEvent> INSTANCE = new DenyAllFilter();
- private DenyAllFilter()
- {
- }
+public class PrincipalLogEventFilter extends Filter<ILoggingEvent>
+{
+ private final Principal _principal;
- public static Filter<ILoggingEvent> getInstance()
+ public PrincipalLogEventFilter(final Principal principal)
{
- return INSTANCE;
+ _principal = principal;
}
- public FilterReply decide(final ILoggingEvent event)
+ @Override
+ public FilterReply decide(ILoggingEvent event)
{
+ Subject subject = Subject.getSubject(AccessController.getContext());
+ if (subject != null && subject.getPrincipals().contains(_principal))
+ {
+ return FilterReply.NEUTRAL;
+ }
return FilterReply.DENY;
}
-
}
Copied: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RollingFileAppenderFactory.java (from r1685537, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RollingFileAppenderFactory.java?p2=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RollingFileAppenderFactory.java&p1=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java&r1=1685537&r2=1685599&rev=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RollingFileAppenderFactory.java Mon Jun 15 15:43:53 2015
@@ -21,117 +21,34 @@
package org.apache.qpid.server.logging;
import java.io.File;
-import java.util.Map;
-import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.Appender;
import ch.qos.logback.core.Context;
import ch.qos.logback.core.rolling.FixedWindowRollingPolicy;
import ch.qos.logback.core.rolling.RollingFileAppender;
import ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP;
import ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy;
import ch.qos.logback.core.rolling.TimeBasedRollingPolicy;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.model.ManagedAttributeField;
-import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
-
-public class BrokerFileLoggerImpl extends AbstractBrokerLogger<BrokerFileLoggerImpl> implements BrokerFileLogger<BrokerFileLoggerImpl>
+public class RollingFileAppenderFactory
{
- @ManagedAttributeField
- private String _layout;
- @ManagedAttributeField
- private String _fileName;
- @ManagedAttributeField
- private boolean _rollDaily;
- @ManagedAttributeField
- private boolean _rollOnRestart;
- @ManagedAttributeField
- private boolean _compressOldFiles;
- @ManagedAttributeField
- private int _maxHistory;
- @ManagedAttributeField
- private String _maxFileSize;
- @ManagedAttributeField
- private boolean _safeMode;
-
- @ManagedObjectFactoryConstructor
- protected BrokerFileLoggerImpl(final Map<String, Object> attributes, Broker<?> broker)
- {
- super(attributes, broker);
- }
-
- @Override
- public String getFileName()
- {
- return _fileName;
- }
-
- @Override
- public boolean isRollDaily()
- {
- return _rollDaily;
- }
-
- @Override
- public boolean isRollOnRestart()
- {
- return _rollOnRestart;
- }
-
- @Override
- public boolean isCompressOldFiles()
- {
- return _compressOldFiles;
- }
-
- @Override
- public int getMaxHistory()
- {
- return _maxHistory;
- }
-
- @Override
- public String getMaxFileSize()
- {
- return _maxFileSize;
- }
-
- @Override
- public boolean isSafeMode()
- {
- return _safeMode;
- }
-
- @Override
- public String getLayout()
- {
- return _layout;
- }
-
- @Override
- public Appender<ILoggingEvent> asAppender()
+ public RollingFileAppender<ILoggingEvent> createRollingFileAppender(FileLoggerSettings fileLoggerSettings, Context loggerContext)
{
RollingFileAppender<ILoggingEvent> appender = new RollingFileAppender<>();
- appender.setFile(getFileName());
+ appender.setFile(fileLoggerSettings.getFileName());
appender.setAppend(true);
+ appender.setContext(loggerContext);
- initializeAppender(appender);
- Context loggerContext = appender.getContext();
-
- if(isRollDaily())
+ if(fileLoggerSettings.isRollDaily())
{
- DailyTriggeringPolicy triggeringPolicy = new DailyTriggeringPolicy();
+ DailyTriggeringPolicy triggeringPolicy = new DailyTriggeringPolicy(fileLoggerSettings.isRollOnRestart(), fileLoggerSettings.getMaxFileSize());
triggeringPolicy.setContext(loggerContext);
TimeBasedRollingPolicy<ILoggingEvent> rollingPolicy = new TimeBasedRollingPolicy<>();
rollingPolicy.setContext(loggerContext);
- rollingPolicy.setMaxHistory(getMaxHistory());
+ rollingPolicy.setMaxHistory(fileLoggerSettings.getMaxHistory());
rollingPolicy.setTimeBasedFileNamingAndTriggeringPolicy(triggeringPolicy);
- rollingPolicy.setFileNamePattern(getFileName() + ".%d{yyyy-MM-dd}.%i" + (isCompressOldFiles()
+ rollingPolicy.setFileNamePattern(fileLoggerSettings.getFileName() + ".%d{yyyy-MM-dd}.%i" + (fileLoggerSettings.isCompressOldFiles()
? ".gz"
: ""));
appender.setRollingPolicy(rollingPolicy);
@@ -140,11 +57,11 @@ public class BrokerFileLoggerImpl extend
}
else
{
- SizeTriggeringPolicy sizeTriggeringPolicy = new SizeTriggeringPolicy();
+ SizeTriggeringPolicy sizeTriggeringPolicy = new SizeTriggeringPolicy(fileLoggerSettings.isRollOnRestart(), fileLoggerSettings.getMaxFileSize());
sizeTriggeringPolicy.setContext(loggerContext);
- SimpleRollingPolicy rollingPolicy = new SimpleRollingPolicy();
+ SimpleRollingPolicy rollingPolicy = new SimpleRollingPolicy(fileLoggerSettings.getMaxHistory());
rollingPolicy.setContext(loggerContext);
- rollingPolicy.setFileNamePattern(getFileName() + ".%i" + (isCompressOldFiles() ? ".gz" : ""));
+ rollingPolicy.setFileNamePattern(fileLoggerSettings.getFileName() + ".%i" + (fileLoggerSettings.isCompressOldFiles() ? ".gz" : ""));
appender.setRollingPolicy(rollingPolicy);
appender.setTriggeringPolicy(sizeTriggeringPolicy);
rollingPolicy.setParent(appender);
@@ -159,16 +76,16 @@ public class BrokerFileLoggerImpl extend
return appender;
}
- private class DailyTriggeringPolicy extends SizeAndTimeBasedFNATP<ILoggingEvent>
+
+ class DailyTriggeringPolicy extends SizeAndTimeBasedFNATP<ILoggingEvent>
{
private final boolean _rollOnRestart;
private boolean _isFirst = true;
- public DailyTriggeringPolicy()
+ public DailyTriggeringPolicy(boolean isRollOnRestart, String maxFileSize)
{
- _rollOnRestart = isRollOnRestart();
- setMaxFileSize(getMaxFileSize());
-
+ _rollOnRestart = isRollOnRestart;
+ setMaxFileSize(maxFileSize);
}
@Override
@@ -198,16 +115,15 @@ public class BrokerFileLoggerImpl extend
}
-
- private class SizeTriggeringPolicy extends SizeBasedTriggeringPolicy<ILoggingEvent>
+ class SizeTriggeringPolicy extends SizeBasedTriggeringPolicy<ILoggingEvent>
{
private final boolean _rollOnRestart;
private boolean _isFirst = true;
- public SizeTriggeringPolicy()
+ public SizeTriggeringPolicy(boolean isRollOnRestart, String maxFileSize)
{
- _rollOnRestart = isRollOnRestart();
- setMaxFileSize(getMaxFileSize());
+ _rollOnRestart = isRollOnRestart;
+ setMaxFileSize(maxFileSize);
}
@@ -227,14 +143,14 @@ public class BrokerFileLoggerImpl extend
}
- private class SimpleRollingPolicy extends FixedWindowRollingPolicy
+ class SimpleRollingPolicy extends FixedWindowRollingPolicy
{
private int _maxFiles;
- public SimpleRollingPolicy()
+ public SimpleRollingPolicy(int maxHistory)
{
- _maxFiles = getMaxHistory();
- setMaxIndex(getMaxHistory());
+ _maxFiles = maxHistory;
+ setMaxIndex(maxHistory);
setMinIndex(1);
}
Copied: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostFileLogger.java (from r1685537, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLogger.java)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostFileLogger.java?p2=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostFileLogger.java&p1=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLogger.java&r1=1685537&r2=1685599&rev=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLogger.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostFileLogger.java Mon Jun 15 15:43:53 2015
@@ -20,16 +20,19 @@
*/
package org.apache.qpid.server.logging;
-import org.apache.qpid.server.model.BrokerLogger;
+
import org.apache.qpid.server.model.ManagedAttribute;
import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.VirtualHostLogger;
-@ManagedObject( category = false, type = BrokerFileLogger.TYPE)
-public interface BrokerFileLogger<X extends BrokerFileLogger<X>> extends BrokerLogger<X>
+@ManagedObject( category = false, type = VirtualHostFileLogger.TYPE)
+public interface VirtualHostFileLogger<X extends VirtualHostFileLogger<X>> extends VirtualHostLogger<X>
{
String TYPE = "File";
+ String FILE_NAME = "fileName";
- @ManagedAttribute( defaultValue = "${qpid.work_dir}${file.separator}log${file.separator}qpid.log")
+ //TODO: change to better default
+ @ManagedAttribute( defaultValue = "${qpid.work_dir}${file.separator}log${file.separator}${this:name}${file.separator}qpid.log")
String getFileName();
@ManagedAttribute( defaultValue = "false")
@@ -47,9 +50,6 @@ public interface BrokerFileLogger<X exte
@ManagedAttribute( defaultValue = "100mb")
String getMaxFileSize();
- @ManagedAttribute( defaultValue = "false" )
- boolean isSafeMode();
-
@ManagedAttribute(defaultValue = "%d %-5p [%t] \\(%c{2}\\) - %m%n")
String getLayout();
}
Added: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostFileLoggerImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostFileLoggerImpl.java?rev=1685599&view=auto
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostFileLoggerImpl.java (added)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostFileLoggerImpl.java Mon Jun 15 15:43:53 2015
@@ -0,0 +1,117 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.qpid.server.logging;
+
+import java.security.Principal;
+import java.util.Map;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.Appender;
+import ch.qos.logback.core.Context;
+import ch.qos.logback.core.filter.Filter;
+import ch.qos.logback.core.rolling.RollingFileAppender;
+
+import org.apache.qpid.server.model.ManagedAttributeField;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
+import org.apache.qpid.server.model.VirtualHost;
+
+public class VirtualHostFileLoggerImpl extends AbstractVirtualHostLogger<VirtualHostFileLoggerImpl> implements VirtualHostFileLogger<VirtualHostFileLoggerImpl>, FileLoggerSettings
+{
+ private final Principal _principal;
+
+ @ManagedAttributeField
+ private String _layout;
+ @ManagedAttributeField
+ private String _fileName;
+ @ManagedAttributeField
+ private boolean _rollDaily;
+ @ManagedAttributeField
+ private boolean _rollOnRestart;
+ @ManagedAttributeField
+ private boolean _compressOldFiles;
+ @ManagedAttributeField
+ private int _maxHistory;
+ @ManagedAttributeField
+ private String _maxFileSize;
+ @ManagedAttributeField
+ private boolean _safeMode;
+
+ @ManagedObjectFactoryConstructor
+ protected VirtualHostFileLoggerImpl(final Map<String, Object> attributes, VirtualHost<?,?,?> virtualHost)
+ {
+ super(attributes, virtualHost);
+ _principal = virtualHost.getPrincipal();
+ }
+
+ @Override
+ public String getFileName()
+ {
+ return _fileName;
+ }
+
+ @Override
+ public boolean isRollDaily()
+ {
+ return _rollDaily;
+ }
+
+ @Override
+ public boolean isRollOnRestart()
+ {
+ return _rollOnRestart;
+ }
+
+ @Override
+ public boolean isCompressOldFiles()
+ {
+ return _compressOldFiles;
+ }
+
+ @Override
+ public int getMaxHistory()
+ {
+ return _maxHistory;
+ }
+
+ @Override
+ public String getMaxFileSize()
+ {
+ return _maxFileSize;
+ }
+
+ @Override
+ public String getLayout()
+ {
+ return _layout;
+ }
+
+ @Override
+ public Appender<ILoggingEvent> asAppender(Context loggerContext)
+ {
+ RollingFileAppender<ILoggingEvent> rollingFileAppender =
+ new RollingFileAppenderFactory().createRollingFileAppender(this, loggerContext);
+
+ Filter<ILoggingEvent> principalFilter = new PrincipalLogEventFilter(_principal);
+ rollingFileAppender.addFilter(principalFilter);
+ return rollingFileAppender;
+ }
+
+}
Copied: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostNameAndLevelFilter.java (from r1685537, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/DenyAllFilter.java)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostNameAndLevelFilter.java?p2=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostNameAndLevelFilter.java&p1=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/DenyAllFilter.java&r1=1685537&r2=1685599&rev=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/DenyAllFilter.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostNameAndLevelFilter.java Mon Jun 15 15:43:53 2015
@@ -20,26 +20,20 @@
*/
package org.apache.qpid.server.logging;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.filter.Filter;
-import ch.qos.logback.core.spi.FilterReply;
+import org.apache.qpid.server.model.ManagedAttribute;
+import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.VirtualHostLoggerFilter;
-public class DenyAllFilter extends Filter<ILoggingEvent>
+@ManagedObject( category = false, type = VirtualHostNameAndLevelFilter.TYPE)
+public interface VirtualHostNameAndLevelFilter<X extends VirtualHostNameAndLevelFilter<X>> extends VirtualHostLoggerFilter<X>
{
- private static final Filter<ILoggingEvent> INSTANCE = new DenyAllFilter();
+ String TYPE = "NameAndLevel";
+ String LOGGER_NAME = "loggerName";
+ String LEVEL = "level";
- private DenyAllFilter()
- {
- }
-
- public static Filter<ILoggingEvent> getInstance()
- {
- return INSTANCE;
- }
-
- public FilterReply decide(final ILoggingEvent event)
- {
- return FilterReply.DENY;
- }
+ @ManagedAttribute( defaultValue = "" )
+ String getLoggerName();
+ @ManagedAttribute(defaultValue = "INFO" )
+ LogLevel getLevel();
}
Added: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostNameAndLevelFilterImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostNameAndLevelFilterImpl.java?rev=1685599&view=auto
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostNameAndLevelFilterImpl.java (added)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/VirtualHostNameAndLevelFilterImpl.java Mon Jun 15 15:43:53 2015
@@ -0,0 +1,55 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+package org.apache.qpid.server.logging;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
+import org.apache.qpid.server.model.VirtualHostLogger;
+
+public class VirtualHostNameAndLevelFilterImpl extends AbstractNameAndLevelFilter<VirtualHostNameAndLevelFilterImpl>
+ implements VirtualHostNameAndLevelFilter<VirtualHostNameAndLevelFilterImpl>
+{
+
+ @ManagedObjectFactoryConstructor
+ protected VirtualHostNameAndLevelFilterImpl(final Map<String, Object> attributes, VirtualHostLogger<?> logger)
+ {
+ super(parentsMap(logger), attributes);
+ }
+
+ @Override
+ protected void validateChange(ConfiguredObject<?> proxyForValidation, Set<String> changedAttributes)
+ {
+ super.validateChange(proxyForValidation, changedAttributes);
+ VirtualHostNameAndLevelFilter proxyFilter = (VirtualHostNameAndLevelFilter)proxyForValidation;
+ if (changedAttributes.contains(LOGGER_NAME) &&
+ ((getLoggerName() != null && !getLoggerName().equals(proxyFilter.getLoggerName())) ||
+ (getLoggerName() == null && proxyFilter.getLoggerName() != null)))
+ {
+ throw new IllegalConfigurationException("Attribute '" + LOGGER_NAME + " cannot be changed");
+ }
+ }
+
+}
+
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java?rev=1685599&r1=1685598&r2=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java Mon Jun 15 15:43:53 2015
@@ -20,14 +20,8 @@
*/
package org.apache.qpid.server.model;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.Appender;
-
@ManagedObject
public interface BrokerLogger<X extends BrokerLogger<X>> extends ConfiguredObject<X>
{
-
- Appender<ILoggingEvent> asAppender();
-
void stopLogging();
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLoggerFilter.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLoggerFilter.java?rev=1685599&r1=1685598&r2=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLoggerFilter.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLoggerFilter.java Mon Jun 15 15:43:53 2015
@@ -20,11 +20,9 @@
*/
package org.apache.qpid.server.model;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.filter.Filter;
+import org.apache.qpid.server.logging.LoggerFilter;
@ManagedObject
-public interface BrokerLoggerFilter<X extends BrokerLoggerFilter<X>> extends ConfiguredObject<X>
+public interface BrokerLoggerFilter<X extends BrokerLoggerFilter<X>> extends ConfiguredObject<X>, LoggerFilter
{
- Filter<ILoggingEvent> asFilter();
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java?rev=1685599&r1=1685598&r2=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java Mon Jun 15 15:43:53 2015
@@ -72,6 +72,7 @@ public final class BrokerModel extends M
addRelationship(SystemConfig.class, Broker.class);
+ addRelationship(Broker.class, BrokerLogger.class);
addRelationship(Broker.class, VirtualHostNode.class);
addRelationship(Broker.class, Port.class);
addRelationship(Broker.class, AccessControlProvider.class);
@@ -80,17 +81,19 @@ public final class BrokerModel extends M
addRelationship(Broker.class, TrustStore.class);
addRelationship(Broker.class, KeyStore.class);
addRelationship(Broker.class, Plugin.class);
- addRelationship(Broker.class, BrokerLogger.class);
addRelationship(BrokerLogger.class, BrokerLoggerFilter.class);
addRelationship(VirtualHostNode.class, VirtualHost.class);
addRelationship(VirtualHostNode.class, RemoteReplicationNode.class);
+ addRelationship(VirtualHost.class, VirtualHostLogger.class);
addRelationship(VirtualHost.class, Connection.class);
addRelationship(VirtualHost.class, Exchange.class);
addRelationship(VirtualHost.class, Queue.class);
+ addRelationship(VirtualHostLogger.class, VirtualHostLoggerFilter.class);
+
addRelationship(Port.class, VirtualHostAlias.class);
addRelationship(AuthenticationProvider.class, User.class);
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Model.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Model.java?rev=1685599&r1=1685598&r2=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Model.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Model.java Mon Jun 15 15:43:53 2015
@@ -75,7 +75,13 @@ public abstract class Model
return descendants;
}
- <C extends ConfiguredObject> C getAncestor(final Class<C> ancestorClass,
+ public <C extends ConfiguredObject> C getAncestor(final Class<C> ancestorClass,
+ final ConfiguredObject<?> object)
+ {
+ return getAncestor(ancestorClass, object.getCategoryClass(), object);
+ }
+
+ public <C extends ConfiguredObject> C getAncestor(final Class<C> ancestorClass,
final Class<? extends ConfiguredObject> category,
final ConfiguredObject<?> object)
{
@@ -85,7 +91,7 @@ public abstract class Model
}
else
{
- for(Class<? extends ConfiguredObject> parentClass : object.getModel().getParentTypes(category))
+ for(Class<? extends ConfiguredObject> parentClass : getParentTypes(category))
{
ConfiguredObject<?> parent = object.getParent(parentClass);
ConfiguredObject<?> ancestor = getAncestor(ancestorClass, parentClass, parent);
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java?rev=1685599&r1=1685598&r2=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java Mon Jun 15 15:43:53 2015
@@ -21,6 +21,7 @@
package org.apache.qpid.server.model;
import java.security.AccessControlException;
+import java.security.Principal;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -30,6 +31,7 @@ import org.apache.qpid.server.configurat
import org.apache.qpid.server.message.MessageInstance;
import org.apache.qpid.server.model.port.AmqpPort;
import org.apache.qpid.server.store.MessageStore;
+import org.apache.qpid.server.virtualhost.VirtualHostPrincipal;
@ManagedObject( defaultType = "ProvidedStore", description = VirtualHost.CLASS_DESCRIPTION)
public interface VirtualHost<X extends VirtualHost<X, Q, E>, Q extends Queue<?>, E extends Exchange<?> > extends ConfiguredObject<X>
@@ -159,6 +161,8 @@ public interface VirtualHost<X extends V
String getRedirectHost(AmqpPort<?> port);
+ Principal getPrincipal();
+
public static interface Transaction
{
void dequeue(MessageInstance entry);
Copied: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostLogger.java (from r1685537, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostLogger.java?p2=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostLogger.java&p1=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java&r1=1685537&r2=1685599&rev=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostLogger.java Mon Jun 15 15:43:53 2015
@@ -20,14 +20,8 @@
*/
package org.apache.qpid.server.model;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.Appender;
-
@ManagedObject
-public interface BrokerLogger<X extends BrokerLogger<X>> extends ConfiguredObject<X>
+public interface VirtualHostLogger <X extends VirtualHostLogger<X>> extends ConfiguredObject<X>
{
-
- Appender<ILoggingEvent> asAppender();
-
void stopLogging();
}
Copied: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostLoggerFilter.java (from r1685537, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostLoggerFilter.java?p2=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostLoggerFilter.java&p1=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java&r1=1685537&r2=1685599&rev=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostLoggerFilter.java Mon Jun 15 15:43:53 2015
@@ -20,14 +20,10 @@
*/
package org.apache.qpid.server.model;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.Appender;
+import org.apache.qpid.server.logging.LoggerFilter;
+import org.apache.qpid.server.logging.VirtualHostNameAndLevelFilter;
-@ManagedObject
-public interface BrokerLogger<X extends BrokerLogger<X>> extends ConfiguredObject<X>
+@ManagedObject(defaultType = VirtualHostNameAndLevelFilter.TYPE)
+public interface VirtualHostLoggerFilter<X extends VirtualHostLoggerFilter<X>> extends ConfiguredObject<X>, LoggerFilter
{
-
- Appender<ILoggingEvent> asAppender();
-
- void stopLogging();
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java?rev=1685599&r1=1685598&r2=1685599&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java Mon Jun 15 15:43:53 2015
@@ -168,15 +168,17 @@ public class BrokerAdapter extends Abstr
ch.qos.logback.classic.Logger rootLogger =
(ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
-
- Collection<BrokerLogger> loggers = getChildren(BrokerLogger.class);
- for(BrokerLogger<?> logger : loggers)
+ if(_logRecorder == null)
{
- if(_logRecorder == null && logger instanceof BrokerMemoryLogger)
+ Collection<BrokerLogger> loggers = getChildren(BrokerLogger.class);
+ for (BrokerLogger<?> logger : loggers)
{
- Appender appender = rootLogger.getAppender(logger.getName());
- _logRecorder = new LogRecorder((RecordEventAppender) appender);
- break;
+ if (logger instanceof BrokerMemoryLogger)
+ {
+ Appender appender = rootLogger.getAppender(logger.getName());
+ _logRecorder = new LogRecorder((RecordEventAppender) appender);
+ break;
+ }
}
}
@@ -594,7 +596,7 @@ public class BrokerAdapter extends Abstr
@Override
protected ListenableFuture<Void> beforeClose()
{
- _brokerLoggersToClose = getChildren(BrokerLogger.class);
+ _brokerLoggersToClose = new ArrayList(getChildren(BrokerLogger.class));
return super.beforeClose();
}
@@ -608,11 +610,6 @@ public class BrokerAdapter extends Abstr
_eventLogger.message(BrokerMessages.STOPPED());
- if(_logRecorder != null)
- {
- _logRecorder.closeLogRecorder();
- }
-
for (BrokerLogger<?> logger: _brokerLoggersToClose)
{
logger.stopLogging();
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org