Author: orudyy
Date: Thu Jul 2 16:51:38 2015
New Revision: 1688862
URL: http://svn.apache.org/r1688862
Log:
QPID-6618: Allow on-line access to the log entries cached by BrokerMemoryLogger
Added:
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/LogViewer.js
- copied, changed from r1688825,
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogViewer.js
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logger/memory/showLogViewer.html
- copied, changed from r1688825,
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logs/showLogViewer.html
Removed:
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LogRecordsServlet.java
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogViewer.js
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logs/showLogViewer.html
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/LogRecordsRestTest.java
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/LogViewerACLTest.java
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLogger.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/LogRecord.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RecordEventAppender.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/brokerlogger/memory/show.js
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showBroker.html
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
qpid/java/trunk/test-profiles/JavaExcludes
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLogger.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLogger.java?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLogger.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLogger.java
Thu Jul 2 16:51:38 2015
@@ -20,9 +20,13 @@
*/
package org.apache.qpid.server.logging;
+import java.util.Collection;
+
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.ManagedOperation;
+import org.apache.qpid.server.model.Param;
@ManagedObject( category = false, type = BrokerMemoryLogger.TYPE)
public interface BrokerMemoryLogger<X extends BrokerMemoryLogger<X>> extends
BrokerLogger<X>
@@ -32,4 +36,7 @@ public interface BrokerMemoryLogger<X ex
@ManagedAttribute( defaultValue = "4096" )
int getMaxRecords();
+ @ManagedOperation(nonModifying = true)
+ Collection<LogRecord> getLogEntries(@Param(name="lastLogId",
defaultValue="0") long lastLogId);
+
}
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=1688862&r1=1688861&r2=1688862&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
Thu Jul 2 16:51:38 2015
@@ -20,6 +20,10 @@
*/
package org.apache.qpid.server.logging;
+import java.security.AccessControlException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
import java.util.Map;
import ch.qos.logback.classic.spi.ILoggingEvent;
@@ -32,9 +36,9 @@ import org.apache.qpid.server.model.Mana
public class BrokerMemoryLoggerImpl extends
AbstractBrokerLogger<BrokerMemoryLoggerImpl> implements
BrokerMemoryLogger<BrokerMemoryLoggerImpl>
{
-
@ManagedAttributeField
private int _maxRecords;
+ private LogRecorder _logRecorder;
@ManagedObjectFactoryConstructor
protected BrokerMemoryLoggerImpl(final Map<String, Object> attributes,
Broker<?> broker)
@@ -51,7 +55,32 @@ public class BrokerMemoryLoggerImpl exte
@Override
protected Appender<ILoggingEvent> createAppenderInstance(Context context)
{
- return new RecordEventAppender(getMaxRecords());
+ if (_logRecorder != null)
+ {
+ throw new IllegalStateException("RecordEventAppender is already
created");
+ }
+ RecordEventAppender appender = new
RecordEventAppender(getMaxRecords());
+ _logRecorder = new LogRecorder(appender);
+ return appender;
+ }
+
+ @Override
+ public Collection<LogRecord> getLogEntries(long lastLogId)
+ {
+ if (!getSecurityManager().authoriseLogsAccess(this))
+ {
+ throw new AccessControlException("Access to log entries is
denied");
+ }
+
+ List<LogRecord> logRecords = new ArrayList<>();
+ for(LogRecord record : _logRecorder)
+ {
+ if (record.getId() > lastLogId)
+ {
+ logRecords.add(record);
+ }
+ }
+ return logRecords;
}
}
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LogRecord.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LogRecord.java?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LogRecord.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/LogRecord.java
Thu Jul 2 16:51:38 2015
@@ -21,13 +21,15 @@
package org.apache.qpid.server.logging;
import ch.qos.logback.classic.spi.ILoggingEvent;
+import org.apache.qpid.server.model.ManagedAttributeValueType;
+@ManagedAttributeValueType
public class LogRecord
{
private final ILoggingEvent _event;
- private final int _id;
+ private final long _id;
- public LogRecord(int id, ILoggingEvent event)
+ public LogRecord(long id, ILoggingEvent event)
{
_id = id;
_event = event;
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RecordEventAppender.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RecordEventAppender.java?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RecordEventAppender.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/RecordEventAppender.java
Thu Jul 2 16:51:38 2015
@@ -20,6 +20,8 @@
*/
package org.apache.qpid.server.logging;
+import java.util.concurrent.atomic.AtomicLong;
+
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase;
import ch.qos.logback.core.helpers.CyclicBuffer;
@@ -29,11 +31,12 @@ public class RecordEventAppender extends
private CyclicBuffer<LogRecord> _buffer;
private final int _size;
- private volatile int _recordId;
+ private AtomicLong _recordId;
RecordEventAppender(final int size)
{
_size = size;
+ _recordId = new AtomicLong();
}
public void start()
@@ -53,7 +56,7 @@ public class RecordEventAppender extends
{
if (isStarted())
{
- _buffer.add(new LogRecord(_recordId++,eventObject));
+ _buffer.add(new LogRecord(_recordId.incrementAndGet(),
eventObject));
}
}
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
Thu Jul 2 16:51:38 2015
@@ -164,11 +164,6 @@ public interface Broker<X extends Broker
*/
SecurityManager getSecurityManager();
- /**
- * TODO: A temporary hack to expose log recorder via broker instance.
- */
- LogRecorder getLogRecorder();
-
VirtualHost<?,?,?> findVirtualHostByName(String name);
VirtualHostNode findDefautVirtualHostNode();
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=1688862&r1=1688861&r2=1688862&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
Thu Jul 2 16:51:38 2015
@@ -173,20 +173,6 @@ public class BrokerAdapter extends Abstr
ch.qos.logback.classic.Logger rootLogger =
(ch.qos.logback.classic.Logger)
LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
- if(_logRecorder == null)
- {
- Collection<BrokerLogger> loggers = getChildren(BrokerLogger.class);
- for (BrokerLogger<?> logger : loggers)
- {
- if (logger instanceof BrokerMemoryLogger)
- {
- Appender appender =
rootLogger.getAppender(logger.getName());
- _logRecorder = new LogRecorder((RecordEventAppender)
appender);
- break;
- }
- }
- }
-
StartupAppender startupAppender = (StartupAppender)
rootLogger.getAppender(StartupAppender.class.getName());
if (startupAppender != null)
{
@@ -628,12 +614,6 @@ public class BrokerAdapter extends Abstr
}
@Override
- public LogRecorder getLogRecorder()
- {
- return _logRecorder;
- }
-
- @Override
public VirtualHost<?,?,?> findVirtualHostByName(String name)
{
for (VirtualHostNode<?> virtualHostNode :
getChildren(VirtualHostNode.class))
Modified:
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java
(original)
+++
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java
Thu Jul 2 16:51:38 2015
@@ -21,14 +21,13 @@
package org.apache.qpid.server.logging;
import static org.apache.qpid.server.util.LoggerTestHelper.assertLoggedEvent;
+import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import ch.qos.logback.classic.Level;
@@ -41,6 +40,7 @@ import org.apache.qpid.server.configurat
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.BrokerLoggerFilter;
import org.apache.qpid.server.model.BrokerModel;
+import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Model;
import org.apache.qpid.server.model.State;
import org.apache.qpid.server.security.SecurityManager;
@@ -55,6 +55,7 @@ public class BrokerLoggerTest extends Qp
private AbstractBrokerLogger<?> _brokerLogger;
private ListAppender _loggerAppender;
private TaskExecutor _taskExecutor;
+ private Broker<?> _broker;
@Override
public void setUp() throws Exception
@@ -68,16 +69,18 @@ public class BrokerLoggerTest extends Qp
Model model = BrokerModel.getInstance();
- org.apache.qpid.server.security.SecurityManager securityManager =
mock(SecurityManager.class);
- Broker<?> broker = mock(Broker.class);
- when(broker.getSecurityManager()).thenReturn(securityManager);
- when(broker.getModel()).thenReturn(model);
- when(broker.getChildExecutor()).thenReturn(_taskExecutor);
- doReturn(Broker.class).when(broker).getCategoryClass();
+ SecurityManager securityManager = mock(SecurityManager.class);
+
when(securityManager.authoriseLogsAccess(any(ConfiguredObject.class))).thenReturn(true);
+
+ _broker = mock(Broker.class);
+ when(_broker.getSecurityManager()).thenReturn(securityManager);
+ when(_broker.getModel()).thenReturn(model);
+ when(_broker.getChildExecutor()).thenReturn(_taskExecutor);
+ doReturn(Broker.class).when(_broker).getCategoryClass();
Map<String, Object> attributes = new HashMap<>();
attributes.put("name", APPENDER_NAME);
- _brokerLogger = new AbstractBrokerLogger(attributes, broker)
+ _brokerLogger = new AbstractBrokerLogger(attributes, _broker)
{
@Override
public Appender<ILoggingEvent> createAppenderInstance(Context
context)
@@ -88,6 +91,8 @@ public class BrokerLoggerTest extends Qp
_brokerLogger.open();
}
+
+
@Override
public void tearDown() throws Exception
{
@@ -159,4 +164,58 @@ public class BrokerLoggerTest extends Qp
assertNull("Appender found when it should have been deleted",
rootLogger.getAppender(_brokerLogger.getName()));
}
+ public void testBrokerMemoryLoggerGetLogEntries()
+ {
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(BrokerMemoryLogger.NAME, getTestName());
+ attributes.put(ConfiguredObject.TYPE, BrokerMemoryLogger.TYPE);
+ BrokerMemoryLogger logger = new
BrokerMemoryLoggerImplFactory().createInstance(attributes, _broker);
+ try
+ {
+ logger.open();
+
+ Map<String, Object> filterAttributes = new HashMap<>();
+ filterAttributes.put(BrokerNameAndLevelFilter.NAME, "1");
+ filterAttributes.put(BrokerNameAndLevelFilter.LEVEL, LogLevel.ALL);
+ filterAttributes.put(BrokerNameAndLevelFilter.LOGGER_NAME, "");
+ filterAttributes.put(ConfiguredObject.TYPE,
BrokerNameAndLevelFilter.TYPE);
+ logger.createChild(BrokerLoggerFilter.class, filterAttributes);
+
+ Logger messageLogger =
LoggerFactory.getLogger("org.apache.qpid.test");
+ messageLogger.debug("test message 1");
+ Collection<LogRecord> logRecords = logger.getLogEntries(0);
+
+ LogRecord foundRecord = findLogRecord("test message 1",
logRecords);
+
+ assertNotNull("Record is not found", foundRecord);
+
+ messageLogger.debug("test message 2");
+
+ Collection<LogRecord> logRecords2 =
logger.getLogEntries(foundRecord.getId());
+ for (LogRecord record: logRecords2)
+ {
+ assertTrue("Record id " + record.getId() + " is below " +
foundRecord.getId(), record.getId() > foundRecord.getId());
+ }
+
+ LogRecord foundRecord2 = findLogRecord("test message 2",
logRecords2);
+
+ assertNotNull("Record2 is not found", foundRecord2);
+ }
+ finally
+ {
+ logger.delete();
+ }
+ }
+
+ private LogRecord findLogRecord(String message, Collection<LogRecord>
logRecords)
+ {
+ for (LogRecord record: logRecords)
+ {
+ if (message.equals(record.getMessage()))
+ {
+ return record;
+ }
+ }
+ return null;
+ }
}
Modified:
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
(original)
+++
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
Thu Jul 2 16:51:38 2015
@@ -69,7 +69,6 @@ import org.apache.qpid.server.management
import org.apache.qpid.server.management.plugin.servlet.FileServlet;
import org.apache.qpid.server.management.plugin.servlet.RootServlet;
import org.apache.qpid.server.management.plugin.servlet.rest.ApiDocsServlet;
-import org.apache.qpid.server.management.plugin.servlet.rest.LogRecordsServlet;
import
org.apache.qpid.server.management.plugin.servlet.rest.LoggedOnUserPreferencesServlet;
import org.apache.qpid.server.management.plugin.servlet.rest.LogoutServlet;
import
org.apache.qpid.server.management.plugin.servlet.rest.MessageContentServlet;
@@ -316,9 +315,6 @@ public class HttpManagement extends Abst
root.addServlet(new ServletHolder(new MessageContentServlet()),
"/service/message-content/*");
root.addServlet(new ServletHolder(new QueueReportServlet()),
"/service/queuereport/*");
-
- root.addServlet(new ServletHolder(new LogRecordsServlet()),
"/service/logrecords");
-
root.addServlet(new ServletHolder(new MetaDataServlet(getModel())),
"/service/metadata");
root.addServlet(new ServletHolder(new SaslServlet()), "/service/sasl");
Modified:
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
(original)
+++
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
Thu Jul 2 16:51:38 2015
@@ -81,12 +81,6 @@ define(["dojo/parser",
{
that.brokerUpdater = new
BrokerUpdater(contentPane.containerNode, that.modelObj, that.controller);
- var logViewerButton = query(".logViewer",
contentPane.containerNode)[0];
- registry.byNode(logViewerButton).on("click",
function(evt){
- that.controller.show("logViewer", "");
- });
-
-
var addProviderButton =
query(".addAuthenticationProvider", contentPane.containerNode)[0];
connect.connect(registry.byNode(addProviderButton), "onClick", function(evt){
addAuthenticationProvider.show(that.management, that.modelObj);
Modified:
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js
(original)
+++
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js
Thu Jul 2 16:51:38 2015
@@ -36,14 +36,13 @@ define(["dojo/dom",
"qpid/management/AccessControlProvider",
"qpid/management/Port",
"qpid/management/Plugin",
- "qpid/management/logs/LogViewer",
"qpid/management/PreferencesProvider",
"qpid/management/VirtualHostNode",
"qpid/management/Logger",
"dojo/ready",
"dojo/domReady!"],
function (dom, registry, ContentPane, CheckBox, entities, Broker,
VirtualHost, Exchange, Queue, Connection, AuthProvider,
- GroupProvider, Group, KeyStore, TrustStore,
AccessControlProvider, Port, Plugin, LogViewer, PreferencesProvider,
VirtualHostNode, Logger, ready) {
+ GroupProvider, Group, KeyStore, TrustStore,
AccessControlProvider, Port, Plugin, PreferencesProvider, VirtualHostNode,
Logger, ready) {
var controller = {};
var constructors = { broker: Broker, virtualhost: VirtualHost,
exchange: Exchange,
@@ -51,7 +50,7 @@ define(["dojo/dom",
authenticationprovider: AuthProvider,
groupprovider: GroupProvider,
group: Group, keystore: KeyStore, truststore:
TrustStore,
accesscontrolprovider: AccessControlProvider,
port: Port,
- plugin: Plugin, logViewer: LogViewer,
preferencesprovider: PreferencesProvider,
+ plugin: Plugin, preferencesprovider:
PreferencesProvider,
virtualhostnode: VirtualHostNode,
brokerlogger: Logger, virtualhostlogger: Logger};
var tabDiv = dom.byId("managedViews");
Copied:
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/LogViewer.js
(from r1688825,
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogViewer.js)
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/LogViewer.js?p2=qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/LogViewer.js&p1=qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogViewer.js&r1=1688825&r2=1688862&rev=1688862&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogViewer.js
(original)
+++
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/LogViewer.js
Thu Jul 2 16:51:38 2015
@@ -25,9 +25,9 @@ define(["dojo/_base/xhr",
"dijit/registry",
"qpid/common/grid/GridUpdater",
"qpid/common/grid/UpdatableGrid",
- "dojo/text!../../../logs/showLogViewer.html",
+ "dojo/text!logger/memory/showLogViewer.html",
"dojo/domReady!"],
- function (xhr, parser, query, locale, registry, GridUpdater,
UpdatableGrid, markup) {
+ function (xhr, parser, query, locale, registry, GridUpdater,
UpdatableGrid, template) {
var defaulGridRowLimit = 4096;
var currentTimeZone;
@@ -41,34 +41,19 @@ define(["dojo/_base/xhr",
return data;
}
- function LogViewer(name, parent, controller) {
- var self = this;
- this.management = controller.management;
- this.name = name;
+ function LogViewer(loggerModelObj, management, containerNode) {
+ var that = this;
+ this.management = management;
+ this.modelObj = {type: loggerModelObj.type, name:
"getLogEntries", parent: loggerModelObj};
this.lastLogId = 0;
- this.contentPane = null;
- this.downloadLogsButton = null;
- this.downloadLogDialog = null;
+ this.containerNode = containerNode;
+ containerNode.innerHTML = template;
+
parser.parse(containerNode).then(function(instances){that._buildGrid();});
}
- LogViewer.prototype.getTitle = function() {
- return "Log Viewer";
- };
-
- LogViewer.prototype.open = function(contentPane) {
- var self = this;
- this.contentPane = contentPane;
- this.contentPane.containerNode.innerHTML = markup;
-
-
parser.parse(this.contentPane.containerNode).then(function(instances){self._postParse();});
- };
- LogViewer.prototype._postParse = function()
- {
- this._buildGrid();
- };
LogViewer.prototype._buildGrid = function() {
- var self = this;
+ var that = this;
var userPreferences = this.management.userPreferences;
currentTimeZone = userPreferences.getTimeZoneDescription();
var gridStructure = [
@@ -104,11 +89,11 @@ define(["dojo/_base/xhr",
},
{ name: "Level", field: "level", width: "50px", datatype:
"string", autoComplete: true, hidden: true},
{ name: "Logger", field: "logger", width: "150px",
datatype: "string", autoComplete: false, hidden: true},
- { name: "Thread", field: "thread", width: "100px",
datatype: "string", hidden: true},
+ { name: "Thread", field: "threadName", width: "100px",
datatype: "string", hidden: true},
{ name: "Log Message", field: "message", width: "auto",
datatype: "string"}
];
- var gridNode = query("#broker-logfile",
this.contentPane.containerNode)[0];
+ var gridNode = query(".logEntries", this.containerNode)[0];
try
{
var updater = new GridUpdater({
@@ -116,7 +101,7 @@ define(["dojo/_base/xhr",
updatable: false,
serviceUrl: function()
{
- return "service/logrecords?lastLogId=" + self.lastLogId;
+ return that.management.buildObjectURL(that.modelObj,
{lastLogId: that.lastLogId});
},
onUpdate: function(items)
{
@@ -133,7 +118,7 @@ define(["dojo/_base/xhr",
}
if (maxId != -1)
{
- self.lastLogId = maxId
+ that.lastLogId = maxId
}
}
},
@@ -156,9 +141,9 @@ define(["dojo/_base/xhr",
}), gridNode);
var onStyleRow = function(row)
{
- var item = self.grid.getItem(row.index);
+ var item = that.grid.getItem(row.index);
if(item){
- var level = self.grid.store.getValue(item, "level",
null);
+ var level = that.grid.store.getValue(item, "level",
null);
var changed = false;
if(level == "ERROR"){
row.customClasses += " redBackground";
@@ -172,7 +157,7 @@ define(["dojo/_base/xhr",
}
if (changed)
{
- self.grid.focus.styleRow(row);
+ that.grid.focus.styleRow(row);
}
}
};
@@ -189,25 +174,6 @@ define(["dojo/_base/xhr",
}
};
- LogViewer.prototype.close = function() {
- this.management.userPreferences.removeListener(this);
- if (this.grid)
- {
- this.grid.destroy();
- this.grid = null;
- }
- if (this.downloadLogDialog)
- {
- this.downloadLogDialog.destroy();
- this.downloadLogDialog = null;
- }
- if (this.downloadLogsButton)
- {
- this.downloadLogsButton.destroy();
- this.downloadLogsButton = null;
- }
- };
-
LogViewer.prototype.onPreferencesChange = function(data)
{
var userPreferences = this.management.userPreferences;
@@ -219,5 +185,10 @@ define(["dojo/_base/xhr",
}
};
+ LogViewer.prototype.close = function(data)
+ {
+ this.management.userPreferences.removeListener(this);
+ }
+
return LogViewer;
});
Modified:
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/brokerlogger/memory/show.js
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/brokerlogger/memory/show.js?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/brokerlogger/memory/show.js
(original)
+++
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logger/brokerlogger/memory/show.js
Thu Jul 2 16:51:38 2015
@@ -23,14 +23,18 @@ define(["qpid/common/util",
"dojox/html/entities",
"dojo/text!logger/memory/show.html",
"qpid/common/TypeTabExtension",
+ "qpid/management/logger/LogViewer",
"dojo/domReady!"],
- function (util, query, entities, template, TypeTabExtension)
+ function (util, query, entities, template, TypeTabExtension, LogViewer)
{
function BrokerMemoryLogger(params)
{
+ this.logViewer = new LogViewer(params.modelObj, params.management,
params.typeSpecificDetailsNode);
TypeTabExtension.call(this, params.containerNode, template,
"BrokerLogger", "Memory", params.metadata, params.data);
}
- return util.extend(BrokerMemoryLogger, TypeTabExtension);
+ util.extend(BrokerMemoryLogger, TypeTabExtension);
+
+ return BrokerMemoryLogger;
}
);
Copied:
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logger/memory/showLogViewer.html
(from r1688825,
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logs/showLogViewer.html)
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logger/memory/showLogViewer.html?p2=qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logger/memory/showLogViewer.html&p1=qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logs/showLogViewer.html&r1=1688825&r2=1688862&rev=1688862&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logs/showLogViewer.html
(original)
+++
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/logger/memory/showLogViewer.html
Thu Jul 2 16:51:38 2015
@@ -19,8 +19,8 @@
-
-->
<div class="logViewer">
-
- <div id="broker-logfile"></div>
- <br/>
+ <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Log Viewer'"
class="clear">
+ <div class="logEntries"></div>
+ </div>
</div>
Modified:
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showBroker.html
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showBroker.html?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showBroker.html
(original)
+++
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showBroker.html
Thu Jul 2 16:51:38 2015
@@ -136,7 +136,5 @@
<button data-dojo-type="dijit.form.Button"
class="deleteAccessControlProvider">Delete Access Control Provider</button>
</div>
<br/>
- <button data-dojo-type="dijit.form.Button" class="logViewer"
data-dojo-props="iconClass: 'logViewerIcon'">Log Viewer</button>
- <br/><br/>
</div>
Modified:
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
---
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
(original)
+++
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
Thu Jul 2 16:51:38 2015
@@ -892,6 +892,24 @@ public class BrokerACLTest extends QpidR
getRestTestHelper().submitRequest(loggerPath + "/getAllFiles", "GET",
HttpServletResponse.SC_FORBIDDEN);
}
+ public void testViewMemoryLoggerEntriesAllowedDenied() throws Exception
+ {
+ final String loggerName = "testMemoryLogger";
+ final String loggerPath = "brokerlogger/" + loggerName;
+
+ getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER);
+
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(BrokerLogger.NAME, loggerName);
+ attributes.put(ConfiguredObject.TYPE, BrokerMemoryLogger.TYPE);
+ getRestTestHelper().submitRequest("brokerlogger", "PUT", attributes,
HttpServletResponse.SC_CREATED);
+
+ getRestTestHelper().submitRequest(loggerPath +
"/getLogEntries?lastLogId=0", "GET", HttpServletResponse.SC_OK);
+
+ getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER);
+ getRestTestHelper().submitRequest(loggerPath +
"/getLogEntries?lastLogId=0", "GET", HttpServletResponse.SC_FORBIDDEN);
+ }
+
/* === Broker Logger Filters === */
public void testCreateBrokerLoggerFilterAllowedDenied() throws Exception
Modified: qpid/java/trunk/test-profiles/JavaExcludes
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/test-profiles/JavaExcludes?rev=1688862&r1=1688861&r2=1688862&view=diff
==============================================================================
--- qpid/java/trunk/test-profiles/JavaExcludes (original)
+++ qpid/java/trunk/test-profiles/JavaExcludes Thu Jul 2 16:51:38 2015
@@ -33,8 +33,6 @@ org.apache.qpid.server.protocol.v0_8.Max
// QPID-6516: replace Log4J with LogBack
org.apache.qpid.server.jmx.mbeans.LoggingManagementMBeanTest#*
org.apache.qpid.systest.management.jmx.LoggingManagementTest#*
-org.apache.qpid.systest.rest.acl.LogViewerACLTest#*
-org.apache.qpid.systest.rest.LogRecordsRestTest#*
org.apache.qpid.util.LogMonitorTest#*
// Test runs for 2 minutes testing that subtraction works
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]