summaryrefslogtreecommitdiff
path: root/java/broker/src/main
diff options
context:
space:
mode:
authorMartin Ritchie <ritchiem@apache.org>2009-08-12 18:15:21 +0000
committerMartin Ritchie <ritchiem@apache.org>2009-08-12 18:15:21 +0000
commitd0cd1f5494712ad983f1e5c9ad2a6fce6b96f7b3 (patch)
treea3d50e2057b00d363ce96c45853557f2bd2e6630 /java/broker/src/main
parent85d1e341b94443799dff6de38f3b9633543f9f1c (diff)
downloadqpid-python-d0cd1f5494712ad983f1e5c9ad2a6fce6b96f7b3.tar.gz
QPID-2002 : Updated ManagementActor to derive logString from the current thread
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@803648 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/broker/src/main')
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/logging/actors/ManagementActor.java68
1 files changed, 55 insertions, 13 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/logging/actors/ManagementActor.java b/java/broker/src/main/java/org/apache/qpid/server/logging/actors/ManagementActor.java
index 58d55a13bb..2ad0f69fd6 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/logging/actors/ManagementActor.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/logging/actors/ManagementActor.java
@@ -20,13 +20,27 @@
*/
package org.apache.qpid.server.logging.actors;
+import org.apache.qpid.server.logging.LogMessage;
+import org.apache.qpid.server.logging.LogSubject;
import org.apache.qpid.server.logging.RootMessageLogger;
import java.text.MessageFormat;
-import java.security.Principal;
+/**
+ * NOTE: This actor is not thread safe.
+ *
+ * Sharing of a ManagementActor instance between threads may result in an
+ * incorrect actor value being logged.
+ *
+ * This is due to the fact that calls to message will dynamically query the
+ * thread name and use that to set the log format during each message() call.
+ *
+ * This is currently not an issue as each MBean operation creates a new Actor
+ * that is unique for each operation.
+ */
public class ManagementActor extends AbstractActor
{
+ String _lastThreadName = null;
/**
* LOG FORMAT for the ManagementActor,
@@ -37,21 +51,49 @@ public class ManagementActor extends AbstractActor
* 1 - User ID
* 2 - IP
*/
- public static final String MANAGEMENT_FORMAT = "mng:{0}({1}@{2})";
+ public static final String MANAGEMENT_FORMAT = "mng:{0}({1})";
- /**
- * //todo Correct interface to provide connection details
- * @param user
- * @param rootLogger The RootLogger to use for this Actor
- */
- public ManagementActor(Principal user, RootMessageLogger rootLogger)
+ /** @param rootLogger The RootLogger to use for this Actor */
+ public ManagementActor(RootMessageLogger rootLogger)
{
super(rootLogger);
- _logString = "["+ MessageFormat.format(MANAGEMENT_FORMAT,
- "<MNG:ConnectionID>",
- user.getName(),
- "<MNG:RemoteAddress>")
- + "] ";
}
+
+ private void updateLogString()
+ {
+ String currentName = Thread.currentThread().getName();
+
+ // Record the last thread name so we don't have to recreate the log string
+ if (!currentName.equals(_lastThreadName))
+ {
+ _lastThreadName = currentName;
+
+ System.err.println(currentName);
+ // Management Threads have this format.
+ //RMI TCP Connection(2)-169.24.29.116
+ String connectionID = currentName.split("\\(")[1].split("\\)")[0];
+ String ip = currentName.split("-")[1];
+
+ _logString = "[" + MessageFormat.format(MANAGEMENT_FORMAT,
+ connectionID,
+ ip)
+ + "] ";
+ }
+ }
+
+ @Override
+ public void message(LogSubject subject, LogMessage message)
+ {
+ updateLogString();
+ super.message(subject, message);
+ }
+
+ @Override
+ public void message(LogMessage message)
+ {
+ updateLogString();
+ super.message(message);
+ }
+
}