Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

This technical specification page will detail three four areas of work to complete the Status Update change:

  • The new classes required
  • How to provide fixed log messages
  • The additions to existing classes
  • The deletions from existing classes

...

Interface

Description

LogActor

Actor that is requesting the log to be performedwill perform the logging.

MessageStatusLogger

Entity that wishes to provide log statements.

LogSubject

Subject of the logging .

LogMessage MessageStatusLoggerFactory

Factory to generate MSLoggersLogMessages.

RootMessageStatusLogger RootMessageLogger

Root logger that performs logging.

RawMessageLogger

Wrapper for object that actually performs the logging.

...

Implementation of the Actors

Class

Description

ConnectionActor AMQPActor

Responsible for providing data about the Connection when logging.

ManagementConnectionActor ManagementActor

Responsible for providing data about the Management Connection when logging.

Implementation of the

...

LogSubject

Each of these LogSubjects will ensure they toString according to the format design.

Class

Description

ConnectionMessageStatusLogger ConnectionLogSubject

Logger responsible for the Connection format.

ChannelMessageStatusLogger ChannelLogSubject

Logger responsible for the Channel format.

QueueMessageStatusLogger QueueLogSubject

Logger responsible for the Queue format.

ExchangeMessageStatusLogger ExchangeLogSubject

Logger responsible for the Exchange format.

BindingMessageStatusLogger BindingLogSubject

Logger responsible for the Binding format.

SubscriptionMessageStatusLogger SubscriptionLogSubject

Logger responsible for the subscription format.

MessageStoreMessageStatusLogger MessageStoreLogSubject

Logger responsible for the MessageStore format.

RootMessageStatusLoggerImpl RootMessageLoggerImpl

Base logger that performs the final message formatting before logging.

MessageStatusLoggerFactoryImpl LogMessageFactoryImpl

Factory to create the above LoggersLogMessages.

Logging

Class

Description

Log4jRawMessageLogger

Wrapper to use log4j as the output mechanism.

TestRawMessageLogger

Wrapper that provides an inspectable log for testing.

...

Class

Description

BrokerLogMessages

A static class that contains accessors to the various parametrised log messages.

Psuedo-Code Example

Code Block
java
java


// logActor is retreived from the ThreadLocal
// a logMessage of type logMessage (with parms) is then requested for the specified subject.
logActor.logMessage(logSubject, LogMessage(parms))

...
instance of LogActor{

RootLogger logger = ...getRootLogger();L

  public void logMessage(LogSubject subject, LogMessage message)
  {
     if (logger.isMessageEnabled(this, subject)
     {
        // FormatMessage in to :
        // MESSAGE [ this.toString() ] [ subject.toString() ] <messageID> : <message value>
        logger.logMessage(FormatMessage(this, subject, message));
     }	
  }
}

How to provide fixed log messages

The design calls for providing a fixed method of accessing the messages. Such as the following

Code Block
java
java

String version="0.6";
int build=794277;
String message = BrokerLogMessages.BRK-1001(version, build);

The value of message above would be

No Format

BRK-1001 : Startup : Version: 0.6 Build: 794277

This can be done easily with the use of a MessageFormatter and a property file.

Code Block

BRK-1001 = Startup : Version {0} Build: {1}

Initially the BrokerLogMessages class could be hand coded but in a future iteration it could be generated based on the content of the property file.

Additions to existing classes

...

No Format
_logger.info("Binding queue:" + queue + " with routing key '" + routingKey + "' to exchange:" + this);
_logger.debug("Loading configuration for virtualhost: " + config.getName());

Feedback

ID

From

Comment

Response

1

Marnie

Ensure data logged in messaged due to be deleted is not lost.

 

2

Marnie

Following 1: Exception handling messages need further thought as replacing with 'Close' messages loses the cause

 

3

Marnie

Be mindful of performance in generating these log messages

 

4

Marnie

It is not clear that the LogActors, LogSubjects will be created and attached to their repective model objects