Logging improvement contribution
--------------------------------

                 Key: AMQ-1361
                 URL: https://issues.apache.org/activemq/browse/AMQ-1361
             Project: ActiveMQ
          Issue Type: Improvement
          Components: Broker, Transport
    Affects Versions: 5.0.0
            Reporter: David Martín Clavo
             Fix For: 5.0.0
         Attachments: log_analyzer_tool.zip, patch1.zip, patch2.zip

Hello people,

After our proposal some time ago (view 
http://www.nabble.com/Logging-improvement-proposal-tf3570794s2354.html#a9976200),
 we would like to add a little contribution to the ActiveMQ code, and we hope 
that the ActiveMQ developers and users like it.
We thought it would be good to improve ActiveMQ logging's capabilities, in 
order to make debugging, tracing, and understanding ActiveMQ easier.
For this, we have added customization of ActiveMQ's Transport level logging, 
allowing users to write their own logging formats. Also, we have added dynamic 
control of this logging functions (via JMX). We have also developed a simple 
tool to analyze the log files produced.
We have split the contribution into 2 patches, one to add customized log 
formats functionality, and the other to add dynamic management of logging via 
JMX. 1st patch is against SVN rev. 564978. 2nd patch is against 1st patch 
(incremental).

*A. New features*
(1) Logging enhancements (1st patch):
It is now possible to customize what will be written to the log file at 
transport level, by writing a custom class which implements the new LogWriter 
interface.
Also, the option: logWriterName = name has to be added to a transport URI to 
choose which class (format) will be used (more details on how to implement your 
own class / format later).
To activate transport logging, the trace=true flag has to be used.
People who don't want to use the new functionality will not have to change 
their URI's.

(2) Dynamic control of logging enhancements (2nd patch):
(a) Added ability to reload log4j.properties file to the BrokerView MBean.
(b) If the option dynamicManagement=true is appended to the URI, transport 
logging can be managed through JMX:
        -Logging can be switched on / off for every transport or for all of 
them at once.
        -If the option startLogging=false is appended to the URI, a transport 
will initially not log, but a TransportLogger instance will be created, and 
later it can be activated by JMX.
        -Another option lets the user change the JMX port used for these 
functions.

(3) Log parsing and analysis tool:
The tool parses log files (any number of them) of the CustomLogWriter format 
(our own implementation of the LogWriter interface) and has the following 
features:
(a) The tool detects incorrect situations at Transport level: sent but not 
received messages, duplicate messages at transport level.
(b) The tool can show the communication sequence for a message ("travel path" 
of a message).
(c) Other features:
        (c1) Loading of log files is done by choosing a directory with them.
        (c2) Incorrect features can be filtered per type or per connection.
        (c3) Long, hard to read connection / client IDs can be replaced by 
short, easy to compare IDs.
        (c4) Summary of connections, producers, consumers, log files.
Some screen shots are included.

(Continues on first comment)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to