Logging Format Design has been edited by Martin Ritchie (Jul 01, 2009).

Change summary:

Update based on Aidan's feedback

(View changes)

Content:

Logging Format Design

This design follows on from the high level design work to provide a more detailed description of the format that all logged messages will take. The design is split in to two sections:

  • Entity Detail
  • Log Formating

Entity Detail

Each Entity in the system has a format that for logging its own indentifier. When an Entity is actually logged then it must establish its full path by logging the children entities based on the logging hierarchy.

Entity Identifiers

The following is the basic Entity identifiers:

Entity Identifier
Broker b
MessageStore ms
VirtualHost vh(<name>)
Conection con:<uid>(<username>@<ip>/<vhost-name>)
Channel ch:<uid>
Queue qu(<queueName>)
Exchange ex(<exchangeName>)
Binding bd(<routingKey>)
Subscription sub:<uid>:qu(<queueName>)
Plugin pl(name[, <optional values>]*)

The plugin format allows for simple identification of the plugin such as 'ACL', 'Firewall' as well as giving the plugin the option to extend its base format. This extension is to allow easy processing of the log file.

Entity Paths

Broker, VirtualHost & Connection are root identifiers which means no parent nodes need be pre-appended to the log statement.

Entity Log Path Example
MessageStore vh(name)/ms <datetime> [ vh(/)/ms ] <Message>
Channel <Connection>/ch:<uid> <datetime> [ con:1(u...@127.0.0.1/)/ch:1 ] <Message>
Queue <Virtualhost>/qu(<queueName>) <datetime> [ vh(/)/qu(testQueue) ] <Message>
Exchange <Virtualhost>/ex(<exchangeName>) <datetime> [ vh(/)/ex(amq.direct) ] <Message>
Binding <Virtualhost>/<Exchange>/<Queue>/bd(<routingKey>) <datetime> [ vh(/)/ex(amq.direct)/qu(testQueue)/bd(testQueue) ] <Message>
Subscription <Channel>/sub:<uid>:qu(<queue-name>) <datetime> [ con:1(uu...@127.0.0.1/)/ch:1/sub:2:qu(testQueue) ] <Message>
Plugin <Entity>/pl(name[, <optional values>]*) <datetime> [ con:1(u...@127.0.0.1/)/ch:1/pl(ACL, Consume, qu(testQueue)) ] <Message>

The plugin entitiy allows for plugins to log additional details about their operation on an entity. For example as shown above an ACL plugin can log details about the attempt to consume from Queue 'testQueue'.

Log Formatting

To ensure that all log messages are displayed consistently the logging framework will provide the Datetime and Entity details, the requested log message will be added to the end this preamble:

Log Format
<ISO-8601 Datetime (UTC based w/ TZ)> [ <Logging Entity Detail> ] <Log Message>

Example Log Statement
2009-06-29 13:35:10,1234 +0100 [ con:1(u...@127.0.0.1/)/ch:2/sub:1:qu(myqueue) ] Subscription Event Occcured

--------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org

Reply via email to