| <?xml version="1.0"?> |
| <document> |
| |
| <properties> |
| <author email="ceki@apache.org">Ceki Gulcu</author> |
| <title>Release plan for log4j 1.3</title> |
| </properties> |
| |
| <body> |
| |
| <section name="Plan? What plan?"> |
| |
| <p>The following paragragh was adapted from the <a |
| href="http://jakarta.apache.org/cactus/todo.html">Cactus |
| project's roadmap</a> with the author's permission. |
| </p> |
| |
| <p>Our users keep inventing better ways and adding new |
| requirements. The downside is that our todo list keeps |
| growing. The upside is that there is plenty of work to go |
| around. If you are interested in participating, send an email |
| on the log4j-dev@ mailing list stating your interest. You'll |
| be promptly enrolled. We're always looking for help! Don't be |
| put off if in the "Volunteer" column already has a person |
| listed. Programming is fun, especially if it is done in a |
| team. |
| </p> |
| |
| <p> |
| |
| </p> |
| |
| |
| </section> |
| |
| <section name="Workplan for log4j 1.3"> |
| |
| <p>The workplan for log4j 1.3 is not final. It is included here |
| to give you an idea of the future. The items are not listed in |
| any particular order. As always, there is no scheduled |
| release date. The lack of schedule suprises and disturbs some |
| people. Writing good software, like good cooking, takes |
| time. If we make you wait, it is to create a better and more |
| reliable product. |
| </p> |
| |
| <table border="1" cellpadding="3" cellspacing="2"> |
| |
| <tr> |
| <th>Label</th> |
| <th>Comment</th> |
| <th>Volunteer</th> |
| <th>Status</th> |
| </tr> |
| |
| <tr bgcolor="DDDDDD"> |
| <td><b>test cases</b></td> |
| |
| <td> |
| <p>Writing test cases is not the most sexy part of |
| software development but it is one of the most |
| important. Automated test cases allow us to catch bugs |
| as early is possible. It is strongly recommended to add |
| a new test case with each new feature or component.</p> |
| |
| <p>Existing <em>Perl</em> language based test cases are |
| gradually being migrated to junit (all-Java)based test |
| cases. The new tests are placed under the |
| <code>tests/</code> directory. It should be thus |
| possible for participants in the project to understand |
| the stucture of our tests and add tests for their |
| components. |
| </p> |
| </td> |
| |
| <td>All committers</td> |
| <td>ongoing effort</td> |
| </tr> |
| |
| <tr> |
| <td>Extensible XML configuration files</td> |
| |
| <td> |
| <p>The DOMConfigurator is complex and not very |
| flexible. It can only deal with elements that the |
| developer knew about at compilation time. This has been |
| an important drawback in the design of several appenders |
| such as the the SMTPAppender and the |
| RollingFileAppenders and its variants. These appenders |
| need to delegate certain task to sub-components which |
| are configured separately. |
| </p> |
| |
| <p>The support for extensible configuration files will be |
| based on the code in commons-digester authored by Craig |
| McClanahan and Scott Sanders. They graciously granted |
| permission for the modification of their code and its |
| inclusion in log4j.</p> |
| </td> |
| <td>Ceki</td> |
| <td>design board</td> |
| </tr> |
| |
| <tr> |
| <td>Log4j Domains</td> |
| |
| <td> |
| <p>This is a very powerful and innovative concept that |
| extends the notion of hierarchical loggers. It will also |
| allow dynamic logging with pin-point accuracy. It was |
| first suggested to me by Scott Stark of <a |
| href="http://www.jboss.org">JBoss</a> fame. |
| </p> |
| </td> |
| <td>Ceki</td> |
| <td>design board</td> |
| </tr> |
| |
| <tr> |
| <td>Multiple implementations of Logger</td> |
| |
| <td> |
| <p>Based on <code>RepositorySelectors</code> introduced in |
| log4j 1.2, the user will be able to replace the |
| <code>Logger</code> implementation. Several |
| implementations will be provided offering different |
| properties and functionality although none of the |
| implementations will add new public methods. |
| </p> |
| </td> |
| |
| |
| <td>?</td> |
| <td>vaporware</td> |
| </tr> |
| |
| <tr> |
| <td>Improvements to Chainsaw</td> |
| |
| <td> |
| <p>Visualisation and dynamic filtering of logging event is |
| bound to be a very important area of activity in the |
| future. A number of important improvements to chainsaw |
| have been suggested. |
| </p> |
| |
| </td> |
| <td>Oliver Burn</td> |
| <td>under discusison</td> |
| </tr> |
| |
| <tr> |
| <td>Custom conversion characters in PatternLayout</td> |
| <td>Users often want to add new conversions characters or |
| override the existing ones. This should be made easy using |
| new configuration directives. This feature would use the |
| extensions to XML configuration language mentioned |
| above.</td> |
| |
| <td>?</td> |
| <td>not started</td> |
| </tr> |
| |
| <tr> |
| <td>Overture to other programming languages</td> |
| |
| <td>It is higly desriable to allow log4j ports in other languages |
| to access log4j services in a language independent way. |
| </td> |
| |
| <td>?</td> |
| <td>not started</td> |
| </tr> |
| |
| <tr> |
| <td>Strategy based rollovers</td> |
| |
| <td> |
| <p>Contrary to our own DailyRollingFileAppender, Avalon's |
| logkit has a nice and clean implementation for rolling |
| files. See the |
| <code>org.apache.log.output.io.rotate</code> package for |
| exact details. |
| </p> |
| |
| <p>Their implementation is based on strategies which are |
| sub-components of appender. We will be able to configure |
| such sub-components with the new XML configuration |
| scripts. |
| </p> |
| </td> |
| <td>Kevin Steppe</td> |
| <td>not started</td> |
| </tr> |
| |
| |
| |
| <tr> |
| <td>Redesign of configure and watch architecture in |
| configurators</td> |
| |
| <td>This is a very useful feature and the current architecture is not very good. |
| |
| <p>Contributions have been received by Mark Womack and others.</p> |
| |
| <p>See |
| <pre> |
| http://www.mail-archive.com/log4j-dev@jakarta.apache.org/msg01390.html |
| http://www.mail-archive.com/log4j-user@jakarta.apache.org/msg00666.html |
| http://marc.theaimsgroup.com/?t=101010070500002&r=1&w=2 |
| </pre> |
| </p> |
| </td> |
| <td>Mark Womack</td> |
| <td>initial implementation</td> |
| </tr> |
| |
| <tr> |
| <td>Performance improvements to LoggingEvent serialization</td> |
| |
| <td> |
| <p>Ole Dalgaard has shown that by implementing the |
| java.io.Externalizable interface instead of |
| java.io.Serializable in the LoggingEvent class, the |
| speed of serialiazation is increased by a factor of 4 or |
| more. |
| </p> |
| |
| </td> |
| <td>Ole Dalgaard?</td> |
| <td>initial implementation</td> |
| </tr> |
| </table> |
| </section> |
| |
| |
| |
| <section name="Workplan for log4j 1.2"> |
| <p> |
| Here is workplan for the 1.2 release. |
| </p> |
| |
| <table border="1" cellpadding="3" cellspacing="2"> |
| |
| <tr> |
| <th>Label</th> |
| <th>Comment</th> |
| <th>Volunteer</th> |
| <th>Status</th> |
| </tr> |
| |
| <tr bgcolor="DDDDDD"> |
| <td>More test cases</td> |
| |
| <td>We need more automated test cases to catch bugs as early |
| is possible.It is highly recommended to add a new test case |
| with each new feature or component.</td> |
| |
| <td>All committers</td> |
| <td>ongoing effort</td> |
| </tr> |
| |
| |
| <tr> |
| <td>Removal of deprecated methods</td> |
| |
| <td>Deprecated <code>setOption</code> and <code>getOption</code> |
| methods in appender and layouts should be removed.</td> |
| |
| <td>Ceki</td> |
| <td>done</td> |
| </tr> |
| |
| <tr bgcolor="DDDDDD"> |
| <td>JDBCAppender</td> |
| |
| <td> |
| <p>We currently have two competing JDBCAppenders: one by |
| Thomas Fenner and the other by Kevin Steppe.</p> |
| |
| <p>Kevin Steppe stood up and did it.</p> |
| </td> |
| |
| <td>Kevin Steppe</td> |
| |
| <td>done</td> |
| </tr> |
| |
| <tr> |
| <td>Log4j in applets</td> |
| |
| <td>In order to minimize network traffic, the size of log4j-core.jar |
| needs to be reduced to at most 50KB. |
| |
| <p>Log4jME has been released. It's less than 20KB.</p> |
| </td> |
| |
| <td>Ceki</td> |
| <td>done</td> |
| </tr> |
| |
| <tr bgcolor="DDDDDD"> |
| <td>Improved documentation</td> |
| |
| <td>Log4j documentation needs to be enhanced with configuration |
| examples and much more hand-holding.</td> |
| |
| <td>Ceki</td> |
| |
| <td>ongoing effort</td> |
| |
| </tr> |
| |
| <tr> |
| <td valign="top">Mapped Diagnostic Contexts</td> |
| |
| <td>Mapped Diagnostic Contexts are similar to the NDC |
| except that the MDC is a string to string map instead of |
| a stack that the user sets when entering a special |
| context. The <code>PatternLayout</code> has to be |
| enhanced to support this by extending the %x pattern to |
| accept an argument. Here is an example: |
| |
| <pre> |
| ConversionPattern=3D%d %p %c %x{server} %x{host} - %m%n |
| </pre> |
| |
| User code: |
| <pre> |
| { |
| MDC.put("server", "totoServer"); |
| MDC.put("host", "someHost"); |
| |
| logger.debug("Hello"); |
| |
| } |
| </pre> |
| will print: |
| <pre>2000-01-24 10:00:00,000 DEBUG totoServer someHost - Hello</pre> |
| |
| <p>To make MDCs truly user friendly |
| <code>ThreadLocal</code> variables are required. This |
| will allow the MDC to be inherited by child |
| threads. <code>ThreadLocal</code> are only supported |
| under JDK 1.2 and above. In JDK 1.1, the MDC will not |
| work but won't harm the user application either.</p> |
| </td> |
| <td>Ceki</td> |
| <td>done</td> |
| </tr> |
| |
| <tr bgcolor="DDDDDD"> |
| <td>Enhanced variable substitution support in DOMConfigurator</td> |
| <td></td> |
| |
| <td>Ceki</td> |
| <td>done</td> |
| </tr> |
| |
| <tr> |
| <td>FallbackErrorHandler</td> |
| |
| <td>The FallbackErrorHandler implements the ErrorHandler |
| interface such that a secondary appender may be |
| specified. This secondary appender takes over if the primary |
| appender fails for whatever reason. |
| |
| <p>The DOMConfigurator needs to be extended to support the |
| FallbackErrorHandler</p> |
| |
| </td> |
| <td>Ceki</td> |
| <td>implemented, requires further testing</td> |
| </tr> |
| |
| |
| <tr> |
| <td>Ensure backward compatibility of LoggingEvent |
| objects</td> |
| |
| <td>To avoid deployment problems we must ensure that |
| LoggingEvent objects are compatible between 1.2 and 1.1.3. |
| |
| <p>Robert Bushman has proposed a very innovative way for |
| solving this problem. See <a |
| href="http://www.mail-archive.com/log4j-dev@jakarta.apache.org/msg01397.html"> |
| http://www.mail-archive.com/log4j-dev@jakarta.apache.org/msg01397.html</a> |
| for further details. |
| </p> |
| </td> |
| |
| <td>Ceki</td> |
| <td>implemented, manually tested, requires automated test cases</td> |
| </tr> |
| </table> |
| </section> |
| |
| </body> |
| |
| </document> |