<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel about="http://blog.gmane.org/gmane.comp.apache.logging">
    <title>gmane.comp.apache.logging</title>
    <link>http://blog.gmane.org/gmane.comp.apache.logging</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1160"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1159"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1158"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1157"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1156"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1155"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1154"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1153"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1152"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1151"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1150"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1149"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1148"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1147"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1146"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1145"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1144"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1143"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1142"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.apache.logging/1141"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1160">
    <title>svn commit: r687241 - in /logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw: LogUI.java receivers/ReceiversPanel.java vfs/VFSLogFilePatternReceiver.java</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1160</link>
    <description>Author: sdeboy
Date: Tue Aug 19 21:47:45 2008
New Revision: 687241

URL: http://svn.apache.org/viewvc?rev=687241&amp;view=rev
Log:
ensure all org.apache loggers used by chainsaw and plugins get routed to the chainsaw-log tab

set vfs cache logger to info because debug-level logging can contain username/password

on receiver restart, provide visualreceivers with their needed container

remove vfslogfilepatternreceiver logging which could container username/password

improve vfslogfilepatternreceiver support for restarting the receiver

Modified:
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java

Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java?rev=687241&amp;r1=687240&amp;r2=687241&amp;view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java Tue Aug 19 21:47:45 2008
&lt; at &gt;&lt; at &gt; -334,7 +334,7 &lt; at &gt;&lt; at &gt;
     logUI.ensureChainsawAppenderHandlerAdded();
     logger = LogManager.getLogger(LogUI.class);
 
-    //set hostname &amp; application properties which will cause Chainsaw-generated
+    //set hostname &amp; application properties which will cause Chainsaw and other apache-generated
     //logging events to route (by default) to a tab named 'chainsaw-log'
     PropertyRewritePolicy policy = new PropertyRewritePolicy();
     policy.setProperties("hostname=chainsaw,application=log");
&lt; at &gt;&lt; at &gt; -342,7 +342,7 &lt; at &gt;&lt; at &gt;
     RewriteAppender rewriteAppender = new RewriteAppender();
     rewriteAppender.setRewritePolicy(policy);
 
-    Enumeration appenders = Logger.getLogger("org.apache.log4j").getAllAppenders();
+    Enumeration appenders = Logger.getLogger("org.apache").getAllAppenders();
     if (!appenders.hasMoreElements()) {
     appenders = Logger.getRootLogger().getAllAppenders();
     }
&lt; at &gt;&lt; at &gt; -350,9 +350,11 &lt; at &gt;&lt; at &gt;
     Appender nextAppender = (Appender)appenders.nextElement();
     rewriteAppender.addAppender(nextAppender);
     }
-    Logger.getLogger("org.apache.log4j").removeAllAppenders();
-    Logger.getLogger("org.apache.log4j").addAppender(rewriteAppender);
-    Logger.getLogger("org.apache.log4j").setAdditivity(false);
+    Logger.getLogger("org.apache").removeAllAppenders();
+    Logger.getLogger("org.apache").addAppender(rewriteAppender);
+    Logger.getLogger("org.apache").setAdditivity(false);
+    //set the commons.vfs.cache logger to info, since it can contain password information
+    Logger.getLogger("org.apache.commons.vfs.cache").setLevel(Level.INFO);
     
     Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
 public void uncaughtException(Thread t, Throwable e) {

Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java?rev=687241&amp;r1=687240&amp;r2=687241&amp;view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java Tue Aug 19 21:47:45 2008
&lt; at &gt;&lt; at &gt; -303,6 +303,10 &lt; at &gt;&lt; at &gt;
               }
               selectedReceiver.shutdown();
               selectedReceiver.activateOptions();
+              //allow the visual receiver to get a container on restart
+              if (selectedReceiver instanceof VisualReceiver) {
+                  ((VisualReceiver)selectedReceiver).setContainer(ReceiversPanel.this);
+              }
             }
           };
 

Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java?rev=687241&amp;r1=687240&amp;r2=687241&amp;view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java Tue Aug 19 21:47:45 2008
&lt; at &gt;&lt; at &gt; -222,8 +222,8 &lt; at &gt;&lt; at &gt;
    * Read and process the log file.
    */
   public void activateOptions() {
-  
-      if (promptForUserInfo) {
+      //on receiver restart, only prompt for credentials if we don't already have them
+      if (promptForUserInfo &amp;&amp; getFileURL().indexOf("&lt; at &gt;") == -1) {
       /*
       if promptforuserinfo is true, wait for a reference to the container 
       (via the VisualReceiver callback).
&lt; at &gt;&lt; at &gt; -303,7 +303,8 &lt; at &gt;&lt; at &gt;
   private class VFSReader implements Runnable {
         public void run() {
         FileObject fileObject = null;
-            while (reader == null) {
+        //thread should end when we're no longer active
+            while (reader == null &amp;&amp; isActive()) {
             int atIndex = getFileURL().indexOf("&lt; at &gt;");
             int protocolIndex = getFileURL().indexOf("://");
             
&lt; at &gt;&lt; at &gt; -315,7 +316,7 &lt; at &gt;&lt; at &gt;
                     //if jsch not in classpath, can get NoClassDefFoundError here
                     try {
                     SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking(opts, "no");
-                    SftpFileSystemConfigBuilder.getInstance().setUserInfo(opts, new MyUserInfo());
+                    SftpFileSystemConfigBuilder.getInstance().setUserInfo(opts, new MyUserInfo(password));
                     } catch (NoClassDefFoundError ncdfe) {
                     getLogger().warn("JSch not on classpath!", ncdfe);
                     }
&lt; at &gt;&lt; at &gt; -353,7 +354,7 &lt; at &gt;&lt; at &gt;
                     //if jsch not in classpath, can get NoClassDefFoundError here
                     try {
                     SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking(opts, "no");
-                    SftpFileSystemConfigBuilder.getInstance().setUserInfo(opts, new MyUserInfo());
+                    SftpFileSystemConfigBuilder.getInstance().setUserInfo(opts, new MyUserInfo(password));
                     } catch (NoClassDefFoundError ncdfe) {
                     getLogger().warn("JSch not on classpath!", ncdfe);
                     }
&lt; at &gt;&lt; at &gt; -388,9 +389,9 &lt; at &gt;&lt; at &gt;
                 } while (isTailing());
 
             } catch (IOException ioe) {
-                getLogger().info("stream closed");
+                getLogger().info("stream closed", ioe);
             }
-            getLogger().debug("processing " + getFileURL() + " complete");
+            getLogger().debug("processing complete");
             shutdown();
         }
     }
&lt; at &gt;&lt; at &gt; -474,9 +475,14 &lt; at &gt;&lt; at &gt;
    * 
    * &lt; at &gt;author sdeboy
    */
-  public class MyUserInfo implements UserInfo, UIKeyboardInteractive {
+  public static class MyUserInfo implements UserInfo, UIKeyboardInteractive {
+    private final String thisPassword;
+    
+    public MyUserInfo(String thisPassword) {
+        this.thisPassword = thisPassword;
+    }
 public String[] promptKeyboardInteractive(String destination, String loginName, String instruction, String[] prompt, boolean[] echo) {
-return new String[]{password};
+return new String[]{thisPassword};
 }
 
 public String getPassphrase() {



</description>
    <dc:creator>sdeboy&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-08-20T04:47:45</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1159">
    <title>svn commit: r687146 - /logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1159</link>
    <description>Author: sdeboy
Date: Tue Aug 19 13:36:36 2008
New Revision: 687146

URL: http://svn.apache.org/viewvc?rev=687146&amp;view=rev
Log:
Allow fileURL to not include credentials

Strip username/password from host/path properties if they're provided in the fileURL

Modified:
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java

Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java?rev=687146&amp;r1=687145&amp;r2=687146&amp;view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java Tue Aug 19 13:36:36 2008
&lt; at &gt;&lt; at &gt; -239,6 +239,7 &lt; at &gt;&lt; at &gt;
       while (container == null) {
       try {
       waitForContainerLock.wait(1000);
+      getLogger().debug("waiting for setContainer call");
       } catch (InterruptedException ie){}
       }
       }
&lt; at &gt;&lt; at &gt; -249,6 +250,7 &lt; at &gt;&lt; at &gt;
       while ((containerFrame1 = (Frame)SwingUtilities.getAncestorOfClass(Frame.class, container)) == null) {
       try {
       waitForContainerLock.wait(1000);
+      getLogger().debug("waiting for container's frame to be available");
       } catch (InterruptedException ie) {}
       }
       }
&lt; at &gt;&lt; at &gt; -266,22 +268,34 &lt; at &gt;&lt; at &gt;
         f.setLocation(d.width /2, d.height/2);
         f.setVisible(true);
       if (null == f.getUserName() || null == f.getPassword()) {
-      getLogger().warn("No username or password provided - not loading file " + getFileURL());
+      getLogger().info("Username and password not both provided, not using credentials");
       } else {
-      password = new String(f.getPassword());
-      int index = getFileURL().indexOf("://");
-      String firstPart = getFileURL().substring(0, index);
-      String lastPart = getFileURL().substring(index + "://".length());
-      setFileURL(firstPart + "://" + f.getUserName()+ ":" + new String(password) + "&lt; at &gt;" + lastPart);
-            new Thread(new VFSReader()).start();
+          String oldURL = getFileURL();
+      int index = oldURL.indexOf("://");
+      String firstPart = oldURL.substring(0, index);
+      String lastPart = oldURL.substring(index + "://".length());
+      setFileURL(firstPart + "://" + f.getUserName()+ ":" + new String(f.getPassword()) + "&lt; at &gt;" + lastPart);
+
+              setHost(oldURL.substring(0, index + "://".length()));
+                  setPath(oldURL.substring(index + "://".length()));
       }
+      new Thread(new VFSReader()).start();
         }
         });
       }}).start();
       } else {
-int index = getFileURL().indexOf("://");
-String lastPart = getFileURL().substring(index + "://".length());
-password = lastPart.substring(lastPart.indexOf(":") + 1, lastPart.indexOf("&lt; at &gt;"));
+        String oldURL = getFileURL();
+int index = oldURL.indexOf("://");
+String lastPart = oldURL.substring(index + "://".length());
+int passEndIndex = lastPart.indexOf("&lt; at &gt;");
+if (passEndIndex &gt; -1) { //we have a username/password
+    int passBeginIndex = lastPart.indexOf(":");
+//        String userName = lastPart.substring(0, passBeginIndex);
+        password = lastPart.substring(passBeginIndex + 1, passEndIndex);
+            setHost(oldURL.substring(0, index + "://".length()));
+            setPath(lastPart.substring(passEndIndex + 1));
+}
+
        new Thread(new VFSReader()).start();
       }
    }



</description>
    <dc:creator>sdeboy&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-08-19T20:36:37</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1158">
    <title>svn commit: r685235 - /logging/site/trunk/docs/catalog.html</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1158</link>
    <description>Author: carnold
Date: Tue Aug 12 10:24:58 2008
New Revision: 685235

URL: http://svn.apache.org/viewvc?rev=685235&amp;view=rev
Log:
Bug 45352: Update Catalog URL for SNMPTrapAppender

Modified:
    logging/site/trunk/docs/catalog.html

Modified: logging/site/trunk/docs/catalog.html
URL: http://svn.apache.org/viewvc/logging/site/trunk/docs/catalog.html?rev=685235&amp;r1=685234&amp;r2=685235&amp;view=diff
==============================================================================
--- logging/site/trunk/docs/catalog.html (original)
+++ logging/site/trunk/docs/catalog.html Tue Aug 12 10:24:58 2008
&lt; at &gt;&lt; at &gt; -9,18 +9,17 &lt; at &gt;&lt; at &gt;
 
 
 
-&lt;html&gt;
+
+&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
   &lt;head&gt;
-    &lt;title&gt;Apache Logging Services Project - 
-    Catalog&lt;/title&gt;
+    &lt;title&gt;Apache Logging Services Project - Catalog&lt;/title&gt;
     &lt;style type="text/css" media="all"&gt;
       &lt; at &gt;import url("./css/maven-base.css");
       &lt; at &gt;import url("./css/maven-theme.css");
       &lt; at &gt;import url("./css/site.css");
     &lt;/style&gt;
     &lt;link rel="stylesheet" href="./css/print.css" type="text/css" media="print" /&gt;
-          &lt;meta name="author" content="
-    Ceki Gülcü" /&gt;
+          &lt;meta name="author" content="Ceki Gülcü" /&gt;
         &lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /&gt;
       &lt;/head&gt;
   &lt;body class="composite"&gt;
&lt; at &gt;&lt; at &gt; -42,11 +41,12 &lt; at &gt;&lt; at &gt;
     
   
   
+    
             &lt;div class="xleft"&gt;
-        Last Published: 09/01/2007
+        Last Published: 2008-08-12
                           |   
-          &lt;a href="http://www.apache.org/"&gt;Apache&lt;/a&gt;
-              &amp;gt;
+                &lt;a href="http://www.apache.org/" class="externalLink"&gt;Apache&lt;/a&gt;
+                &amp;gt;
       
           Logging Services
                         &lt;/div&gt;
&lt; at &gt;&lt; at &gt; -57,6 +57,7 &lt; at &gt;&lt; at &gt;
     
   
   
+    
   &lt;/div&gt;
       &lt;div class="clear"&gt;
         &lt;hr/&gt;
&lt; at &gt;&lt; at &gt; -71,47 +72,48 &lt; at &gt;&lt; at &gt;
     
   
   
+    
                    &lt;h5&gt;Project&lt;/h5&gt;
-        &lt;ul&gt;
+            &lt;ul&gt;
               
     &lt;li class="none"&gt;
-              &lt;a href="index.html"&gt;Welcome&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="index.html"&gt;Welcome&lt;/a&gt;
+          &lt;/li&gt;
               
     &lt;li class="none"&gt;
-              &lt;a href="news.html"&gt;News&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="news.html"&gt;News&lt;/a&gt;
+          &lt;/li&gt;
               
     &lt;li class="none"&gt;
-              &lt;a href="charter.html"&gt;Charter&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="charter.html"&gt;Charter&lt;/a&gt;
+          &lt;/li&gt;
               
     &lt;li class="none"&gt;
-              &lt;a href="guidelines.html"&gt;Guidelines&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="guidelines.html"&gt;Guidelines&lt;/a&gt;
+          &lt;/li&gt;
               
     &lt;li class="none"&gt;
-              &lt;a href="team-list.html"&gt;Team&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="team-list.html"&gt;Team&lt;/a&gt;
+          &lt;/li&gt;
               
     &lt;li class="none"&gt;
-              &lt;a href="mail-lists.html"&gt;Mailing List&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="mail-lists.html"&gt;Mailing List&lt;/a&gt;
+          &lt;/li&gt;
               
     &lt;li class="none"&gt;
-              &lt;a href="license.html"&gt;License&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="license.html"&gt;License&lt;/a&gt;
+          &lt;/li&gt;
           &lt;/ul&gt;
-          &lt;h5&gt;Products&lt;/h5&gt;
-        &lt;ul&gt;
+              &lt;h5&gt;Products&lt;/h5&gt;
+            &lt;ul&gt;
               
     &lt;li class="none"&gt;
-              &lt;a href="chainsaw/index.html"&gt;chainsaw&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="chainsaw/index.html"&gt;chainsaw&lt;/a&gt;
+          &lt;/li&gt;
               
     &lt;li class="none"&gt;
-              &lt;a href="log4cxx/index.html"&gt;log4cxx&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="log4cxx/index.html"&gt;log4cxx&lt;/a&gt;
+          &lt;/li&gt;
               
           
               
&lt; at &gt;&lt; at &gt; -132,20 +134,20 &lt; at &gt;&lt; at &gt;
       
                     
         &lt;li class="expanded"&gt;
-              &lt;a href=""&gt;log4j&lt;/a&gt;
-                &lt;ul&gt;
+                    &lt;a href=""&gt;log4j&lt;/a&gt;
+                  &lt;ul&gt;
                   
     &lt;li class="none"&gt;
-              &lt;a href="log4j/1.2/index.html"&gt;1.2&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="log4j/1.2/index.html"&gt;1.2&lt;/a&gt;
+          &lt;/li&gt;
                   
     &lt;li class="none"&gt;
-              &lt;a href="log4j/1.3/index.html"&gt;1.3&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="log4j/1.3/index.html"&gt;1.3&lt;/a&gt;
+          &lt;/li&gt;
                   
     &lt;li class="none"&gt;
-              &lt;a href="log4j/2.0/index.html"&gt;2.0&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="log4j/2.0/index.html"&gt;2.0&lt;/a&gt;
+          &lt;/li&gt;
                   
           
               
&lt; at &gt;&lt; at &gt; -158,82 +160,82 &lt; at &gt;&lt; at &gt;
       
               
         &lt;li class="expanded"&gt;
-              &lt;a href=""&gt;companions&lt;/a&gt;
-                &lt;ul&gt;
+                    &lt;a href=""&gt;companions&lt;/a&gt;
+                  &lt;ul&gt;
                   
     &lt;li class="none"&gt;
-              &lt;a href="log4j/companions/component/index.html"&gt;component&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="log4j/companions/component/index.html"&gt;component&lt;/a&gt;
+          &lt;/li&gt;
                   
     &lt;li class="none"&gt;
-              &lt;a href="log4j/companions/extras/index.html"&gt;extras&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="log4j/companions/extras/index.html"&gt;extras&lt;/a&gt;
+          &lt;/li&gt;
                   
     &lt;li class="none"&gt;
-              &lt;a href="log4j/companions/receivers/index.html"&gt;receivers&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="log4j/companions/receivers/index.html"&gt;receivers&lt;/a&gt;
+          &lt;/li&gt;
                   
     &lt;li class="none"&gt;
-              &lt;a href="log4j/companions/zeroconf/index.html"&gt;zeroconf&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="log4j/companions/zeroconf/index.html"&gt;zeroconf&lt;/a&gt;
+          &lt;/li&gt;
               &lt;/ul&gt;
         &lt;/li&gt;
               &lt;/ul&gt;
         &lt;/li&gt;
               
     &lt;li class="none"&gt;
-              &lt;a href="log4net/index.html"&gt;log4net&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="log4net/index.html"&gt;log4net&lt;/a&gt;
+          &lt;/li&gt;
           &lt;/ul&gt;
-          &lt;h5&gt;Incubations&lt;/h5&gt;
-        &lt;ul&gt;
+              &lt;h5&gt;Incubations&lt;/h5&gt;
+            &lt;ul&gt;
               
     &lt;li class="none"&gt;
-              &lt;a href="http://incubator.apache.org/log4php/index.html"&gt;log4php&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="http://incubator.apache.org/log4php/index.html" class="externalLink"&gt;log4php&lt;/a&gt;
+          &lt;/li&gt;
           &lt;/ul&gt;
-          &lt;h5&gt;Documentation&lt;/h5&gt;
-        &lt;ul&gt;
+              &lt;h5&gt;Documentation&lt;/h5&gt;
+            &lt;ul&gt;
               
     &lt;li class="none"&gt;
               &lt;strong&gt;Catalog&lt;/strong&gt;
         &lt;/li&gt;
               
     &lt;li class="none"&gt;
-              &lt;a href="http://wiki.apache.org/logging"&gt;Wiki&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="http://wiki.apache.org/logging" class="externalLink"&gt;Wiki&lt;/a&gt;
+          &lt;/li&gt;
           &lt;/ul&gt;
-          &lt;h5&gt;Website&lt;/h5&gt;
-        &lt;ul&gt;
+              &lt;h5&gt;Website&lt;/h5&gt;
+            &lt;ul&gt;
               
     &lt;li class="none"&gt;
-              &lt;a href="maintenance.html"&gt;Maintenance&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="maintenance.html"&gt;Maintenance&lt;/a&gt;
+          &lt;/li&gt;
               
     &lt;li class="none"&gt;
-              &lt;a href="source-repository.html"&gt;Repository&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="source-repository.html"&gt;Repository&lt;/a&gt;
+          &lt;/li&gt;
           &lt;/ul&gt;
-          &lt;h5&gt;Apache&lt;/h5&gt;
-        &lt;ul&gt;
+              &lt;h5&gt;Apache&lt;/h5&gt;
+            &lt;ul&gt;
               
     &lt;li class="none"&gt;
-              &lt;a href="http://www.apache.org"&gt;Home&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="http://www.apache.org" class="externalLink"&gt;Home&lt;/a&gt;
+          &lt;/li&gt;
               
     &lt;li class="none"&gt;
-              &lt;a href="http://www.apache.org/foundation/sponsorship.html"&gt;Sponsorship&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink"&gt;Sponsorship&lt;/a&gt;
+          &lt;/li&gt;
               
     &lt;li class="none"&gt;
-              &lt;a href="http://www.apache.org/foundation/thanks.html"&gt;Thanks&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="http://www.apache.org/foundation/thanks.html" class="externalLink"&gt;Thanks&lt;/a&gt;
+          &lt;/li&gt;
               
     &lt;li class="none"&gt;
-              &lt;a href="http://www.apachecon.com"&gt;Conferences&lt;/a&gt;
-        &lt;/li&gt;
+                    &lt;a href="http://www.apachecon.com" class="externalLink"&gt;Conferences&lt;/a&gt;
+          &lt;/li&gt;
           &lt;/ul&gt;
-                                       &lt;a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"&gt;
+                                           &lt;a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"&gt;
             &lt;img alt="Built by Maven" src="./images/logos/maven-feather.png"&gt;&lt;/img&gt;
           &lt;/a&gt;
                        
&lt; at &gt;&lt; at &gt; -243,26 +245,19 &lt; at &gt;&lt; at &gt;
     
   
   
+    
         &lt;/div&gt;
     &lt;/div&gt;
     &lt;div id="bodyColumn"&gt;
       &lt;div id="contentBox"&gt;
-        
-
-  
-
-      
-&lt;p&gt;The following logging related projects and products are developed by other parties and are provided
+        &lt;p&gt;The following logging related projects and products are developed by other parties and are provided
   as a public service.  No endorsement of these projects and products should be implied.&lt;/p&gt;
-
-    &lt;a name="log4j related products"&gt;&lt;/a&gt;&lt;div class="section"&gt;&lt;h2&gt;log4j related products&lt;/h2&gt;
-
-      &lt;dl&gt;
-
-
-&lt;dt&gt;&lt;a href="http://minaret.biz/tips/datedFileAppender.html"&gt;&lt;b&gt;DatedFileAppender&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;
-
-&lt;dd&gt;&lt;code&gt;DatedFileAppender&lt;/code&gt; works in the same manner as
+&lt;div class="section"&gt;&lt;h2&gt;&lt;a name="log4j_related_products"&gt;&lt;/a&gt;
+log4j related products&lt;/h2&gt;
+&lt;dl&gt;&lt;dt&gt;&lt;a href="http://minaret.biz/tips/datedFileAppender.html" class="externalLink"&gt;&lt;b&gt;DatedFileAppender&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;&lt;code&gt;DatedFileAppender&lt;/code&gt; works in the same manner as
 the Tomcat FileLogger. Contrary to
 &lt;code&gt;DailyRollingFileAppender&lt;/code&gt; shipping with log4j, log
 file names generated by &lt;code&gt;DatedFileAppender&lt;/code&gt; always
&lt; at &gt;&lt; at &gt; -273,61 +268,47 &lt; at &gt;&lt; at &gt;
 renamed until the first message is logged some time after
 midnight.
 &lt;/dd&gt;
-
-
-
-&lt;dt&gt;
-  &lt;a href="http://www.dankomannhaupt.de/projects/index.html"&gt;&lt;b&gt;JDBCAppender&lt;/b&gt;&lt;/a&gt;
-&lt;/dt&gt; 
-
-        &lt;dd&gt;A powerful &lt;code&gt;JDBCAppender&lt;/code&gt; by Danko Mannhaupt
+&lt;dt&gt;&lt;a href="http://www.dankomannhaupt.de/projects/index.html" class="externalLink"&gt;&lt;b&gt;JDBCAppender&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;A powerful &lt;code&gt;JDBCAppender&lt;/code&gt; by Danko Mannhaupt
   who continues the work of Thomas Fenner. You might find
   this JDBCAppender more suitable then the one that ships with
   log4j 1.2. 
 &lt;/dd&gt;
-
-       
-
-&lt;dt&gt;
-  &lt;a href="http://just4log.sf.net/"&gt;&lt;b&gt;Just4log&lt;/b&gt;&lt;/a&gt;
-&lt;/dt&gt; 
-
-        &lt;dd&gt;Just4Log is a library to enhance dynamically the
+&lt;dt&gt;&lt;a href="http://just4log.sf.net/" class="externalLink"&gt;&lt;b&gt;Just4log&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;Just4Log is a library to enhance dynamically the
         performance of various logging systems inside a java
         application. Dynamically because the sourcecode in java is not
         modified but rather the optimization occurs on the compiled
         ByteCode files.
 &lt;/dd&gt;
-
-     
-&lt;dt&gt;&lt;a href="http://purl.net/jware/antx/"&gt;&lt;b&gt;log4Ant&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;
-
-&lt;dd&gt;log4Ant includes a complete bridge to the Log4J logging systemfor a robust build monitoring system. 
+&lt;dt&gt;&lt;a href="http://purl.net/jware/antx/" class="externalLink"&gt;&lt;b&gt;log4Ant&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;log4Ant includes a complete bridge to the Log4J logging systemfor a robust build monitoring system. 
 These Ant components let you capture, map, and send Ant log messages and stdio output through your Log4J installation.  Contact &lt;a href="maito:contact&lt; at &gt;jware.info"&gt;contact&lt; at &gt;jware.info&lt;/a&gt;
-        &lt;/dd&gt;
-     
-
-&lt;dt&gt;&lt;a href="http://log4j400.sourceforge.net/"&gt;&lt;b&gt;log4j400&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;
-
-&lt;dd&gt;Log4J400 includes MessageQueue and DataQueue Appenders for
+&lt;/dd&gt;
+&lt;dt&gt;&lt;a href="http://log4j400.sourceforge.net/" class="externalLink"&gt;&lt;b&gt;log4j400&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;Log4J400 includes MessageQueue and DataQueue Appenders for
 the AS/400 (aka IBM iSeries).
         &lt;/dd&gt;
-
-    
-
-&lt;dt&gt;&lt;a href="http://sourceforge.net/projects/log4j2db"&gt;&lt;b&gt;log4j2db&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;
-
-&lt;dd&gt;This Project provides a set of EJBs to store Log4J events
+&lt;dt&gt;&lt;a href="http://sourceforge.net/projects/log4j2db" class="externalLink"&gt;&lt;b&gt;log4j2db&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;This Project provides a set of EJBs to store Log4J events
 (received via JMS appender) in a database. The main aim is to
 provide a toolset for a centralized, data-center suitable
 logging.
         &lt;/dd&gt;
-
-
-
-&lt;dt&gt;&lt;a href="http://svn.apache.org/viewcvs.cgi/logging/sandbox/log4j/log4jMini/trunk/"&gt;&lt;b&gt;log4j&lt;em&gt;ME&lt;/em&gt;&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;
-
-&lt;dd&gt;Log4j&lt;em&gt;ME&lt;/em&gt;, or log4j MiniEdition, is based on the
+&lt;dt&gt;&lt;a href="http://svn.apache.org/viewcvs.cgi/logging/sandbox/log4j/log4jMini/trunk/" class="externalLink"&gt;&lt;b&gt;log4j&lt;em&gt;ME&lt;/em&gt;&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;Log4j&lt;em&gt;ME&lt;/em&gt;, or log4j MiniEdition, is based on the
 same code as log4j. However, as the name indicates the
 mini-edition is much smaller. It offers the same client
 interface such that code compiled for log4jME is
&lt; at &gt;&lt; at &gt; -337,186 +318,148 &lt; at &gt;&lt; at &gt;
 classpath. At this time, log4jME is only available through
 ASF Subversion repository in the Logging Services Sandbox.
 &lt;/dd&gt;
-
-       
-
-&lt;dt&gt;&lt;a href="http://www.openfuture.de/Log4Unit/"&gt;&lt;b&gt;log4&lt;em&gt;Unit&lt;/em&gt;&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;
-
-&lt;dd&gt;Log4Unit is a &lt;a href="http://www.junit.org/index.htm"&gt;JUnit&lt;/a&gt; extension
+&lt;dt&gt;&lt;a href="http://www.openfuture.de/Log4Unit/" class="externalLink"&gt;&lt;b&gt;log4&lt;em&gt;Unit&lt;/em&gt;&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;Log4Unit is a &lt;a href="http://www.junit.org/index.htm" class="externalLink"&gt;JUnit&lt;/a&gt;
+ extension
 combining JUnit with Log4J. The intention is to create test
 protocols for JUnit.
 
-        &lt;p&gt;JUnit is asymmetrical in the sense that it focusses on the
+        JUnit is asymmetrical in the sense that it focusses on the
         documentation of test failures and errors. Successful
         execution of a test case is not further documented. In order
         to obtain a test protocol that documents the initial settings,
         the test case execution and its results, a logging component
         is required. Log4J as the current de facto standard is
         selected for this extension.
-        &lt;/p&gt;
-&lt;/dd&gt;
-
-
-
-&lt;dt&gt;&lt;a href="http://www.launchsoftware.com"&gt;&lt;b&gt;Log4Web&lt;/b&gt;&lt;/a&gt; (commercial) &lt;/dt&gt;
-
-&lt;dd&gt;Log4Web is a J2EE web application, designed to web-enable
+        &lt;/dd&gt;
+&lt;dt&gt;&lt;a href="http://www.launchsoftware.com" class="externalLink"&gt;&lt;b&gt;Log4Web&lt;/b&gt;
+&lt;/a&gt;
+ (commercial) &lt;/dt&gt;
+&lt;dd&gt;Log4Web is a J2EE web application, designed to web-enable
   system log files that have been generated by log4j.
 &lt;/dd&gt;
-
-
-
-&lt;dt&gt;&lt;a href="http://jakarta.apache.org/taglibs/doc/log-doc/intro.html"&gt;
-    &lt;b&gt;Log Tag&lt;/b&gt;&lt;/a&gt;
-&lt;/dt&gt;
-&lt;dd&gt;A custom log tag library from the &lt;a href="http://jakarta.apache.org/taglibs/index.html"&gt;Jakarta
-    Taglibs&lt;/a&gt; project.&lt;/dd&gt;
-
-
-
-&lt;dt&gt;&lt;a href="http://www.codeczar.com/products/logweb/index.html"&gt;&lt;b&gt;LogWeb&lt;/b&gt;&lt;/a&gt; &lt;/dt&gt;
-
-&lt;dd&gt;LogWeb is a web interface for configuring log4j at runtime
+&lt;dt&gt;&lt;a href="http://jakarta.apache.org/taglibs/doc/log-doc/intro.html" class="externalLink"&gt;&lt;b&gt;Log Tag&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;A custom log tag library from the &lt;a href="http://jakarta.apache.org/taglibs/index.html" class="externalLink"&gt;Jakarta
+    Taglibs&lt;/a&gt;
+ project.&lt;/dd&gt;
+&lt;dt&gt;&lt;a href="http://www.codeczar.com/products/logweb/index.html" class="externalLink"&gt;&lt;b&gt;LogWeb&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;LogWeb is a web interface for configuring log4j at runtime
 within a servlet container.  Every log4j feature of is
 configurable through this interface.
 &lt;/dd&gt;
-
-
-
-
-&lt;dt&gt;&lt;a href="http://www.m2technologies.net/asp/snmpTrapAppender.asp"&gt;
-    &lt;b&gt;SNMPTrapAppender&lt;/b&gt;&lt;/a&gt;
-&lt;/dt&gt;
-
-&lt;dd&gt;An appender to send formatted logging event strings to a
+&lt;dt&gt;&lt;a href="http://code.google.com/p/log4j-snmp-trap-appender/" class="externalLink"&gt;&lt;b&gt;SNMPTrapAppender&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;An appender to send formatted logging event strings to a
   specified managment host (typically, a MLM of some sort, but
   could also be an SNMP management console) in the form of an
   SNMP trap.
 &lt;/dd&gt;
-
-
-
-         &lt;dt&gt;&lt;a href="http://xpolog.com"&gt;&lt;b&gt;XpoLog&lt;/b&gt;&lt;/a&gt;
-&lt;/dt&gt;
-
-&lt;dd&gt;Log view and analysis application which enables web
+&lt;dt&gt;&lt;a href="http://xpolog.com" class="externalLink"&gt;&lt;b&gt;XpoLog&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;Log view and analysis application which enables web
 browsing and analysis over logs.
 &lt;/dd&gt;
-
-
-
-      &lt;/dl&gt;
-    &lt;/div&gt;
-&lt;a name="Other Logging Frameworks"&gt;&lt;/a&gt;&lt;div class="section"&gt;&lt;h2&gt;Other Logging Frameworks&lt;/h2&gt;
-&lt;dl&gt;
- 
-        &lt;dt&gt;&lt;a href="http://incubator.apache.org/projects/log4php.html"&gt;&lt;b&gt;log4php&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt; 
-
-        &lt;dd&gt;Log4Php is a PHP port of log4j framework. It supports xml configuration,
+&lt;/dl&gt;
+&lt;/div&gt;
+&lt;div class="section"&gt;&lt;h2&gt;&lt;a name="Other_Logging_Frameworks"&gt;&lt;/a&gt;
+Other Logging Frameworks&lt;/h2&gt;
+&lt;dl&gt;&lt;dt&gt;&lt;a href="http://incubator.apache.org/projects/log4php.html" class="externalLink"&gt;&lt;b&gt;log4php&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;Log4Php is a PHP port of log4j framework. It supports xml configuration,
         logging to files, stdout/err, syslog, socket, configurable
         output layouts and logging levels. &lt;/dd&gt;
-
-
-&lt;dt&gt;&lt;a href="http://log4c.sourceforge.net"&gt;&lt;b&gt;log4c&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;
-
-&lt;dd&gt;ANSI C functions and macros for flexible logging to files
+&lt;dt&gt;&lt;a href="http://log4c.sourceforge.net" class="externalLink"&gt;&lt;b&gt;log4c&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;ANSI C functions and macros for flexible logging to files
 and other destinations. It is modeled after log4j. It follows
 the log4j API within the limits of reason. Intended for use in time-space
-critical environments.&lt;/dd&gt; 
-
- 
-
-&lt;dt&gt;&lt;a href="http://sourceforge.net/projects/log4cpp/"&gt;&lt;b&gt;log4cpp&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;
-&lt;dd&gt;A library of C++ classes for flexible logging to files,
+critical environments.&lt;/dd&gt;
+&lt;dt&gt;&lt;a href="http://sourceforge.net/projects/log4cpp/" class="externalLink"&gt;&lt;b&gt;log4cpp&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;A library of C++ classes for flexible logging to files,
 syslog, IDSA and other destinations modeled after log4j.&lt;/dd&gt;
-
- 
-
-&lt;dt&gt;&lt;a href="http://log4cplus.sourceforge.net/"&gt;&lt;b&gt;log4cplus&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;
-&lt;dd&gt;Log4cplus is a simple to use C++ logging API providing
+&lt;dt&gt;&lt;a href="http://log4cplus.sourceforge.net/" class="externalLink"&gt;&lt;b&gt;log4cplus&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;Log4cplus is a simple to use C++ logging API providing
 thread-safe, flexible, and arbitrarily granular control over
 log management and configuration. It is modeled after the Java
 log4j API.&lt;/dd&gt;
-
-
-
-&lt;dt&gt;&lt;a href="http://goanna.sourceforge.net/"&gt;&lt;b&gt;log4E&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;
-
-&lt;dd&gt;The Goanna project (Eiffel Web Services) now includes
+&lt;dt&gt;&lt;a href="http://goanna.sourceforge.net/" class="externalLink"&gt;&lt;b&gt;log4E&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;The Goanna project (Eiffel Web Services) now includes
 log4E, a complete port of log4j. 
 &lt;/dd&gt;
-
-
-&lt;dt&gt;&lt;a href="http://log4perl.sourceforge.net"&gt;&lt;b&gt;Log::Log4perl&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;
-
-&lt;dd&gt;Log::Log4perl is a Perl port of log4j by Kevin Goess and
+&lt;dt&gt;&lt;a href="http://log4perl.sourceforge.net" class="externalLink"&gt;&lt;b&gt;Log::Log4perl&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;Log::Log4perl is a Perl port of log4j by Kevin Goess and
 Mike Schilli. The authors made sure that their port was as
 close as possible to the original implementation.  Even the
 configuration files are similar! The project is still being
 enhanced, however the current release is stable and has been
 released to CPAN.
 &lt;/dd&gt;
-
-        
-        &lt;dt&gt;&lt;a href="http://log4ls.sourceforge.net/"&gt;&lt;b&gt;log4LS&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;
-
-        &lt;dd&gt;Log4LS is a LotusScript library package and is used to get
+&lt;dt&gt;&lt;a href="http://log4ls.sourceforge.net/" class="externalLink"&gt;&lt;b&gt;log4LS&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;Log4LS is a LotusScript library package and is used to get
          logging statements to a Domino database, sent by mail or
          written to a file. It is modeled after Jakarta log4j.
          &lt;/dd&gt;
-
-
-&lt;dt&gt;&lt;a href="http://www.its4you.at/log4py.php"&gt;&lt;b&gt;log4py&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;
-
-&lt;dd&gt;Log4Py is a python logging module similar to log4j. It
+&lt;dt&gt;&lt;a href="http://www.its4you.at/log4py.php" class="externalLink"&gt;&lt;b&gt;log4py&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;Log4Py is a python logging module similar to log4j. It
 supports logging to files or to stdout/stderr, variable
 log-levels, configurable output formats and configuration via
 configuration files. 
 &lt;/dd&gt;
-
-
-
-&lt;dt&gt;&lt;a href="http://log4p.sourceforge.net"&gt;&lt;b&gt;log4p&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;
-&lt;dd&gt;Another Python translation of log4j. This project no
+&lt;dt&gt;&lt;a href="http://log4p.sourceforge.net" class="externalLink"&gt;&lt;b&gt;log4p&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;Another Python translation of log4j. This project no
 longer seems to be maintained.&lt;/dd&gt;
-
-
-
-&lt;dt&gt;&lt;a href="http://log4plsql.sourceforge.net/"&gt;&lt;b&gt;log4plsql&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;
-
-&lt;dd&gt;Log4plsql is a Oracle PL/SQL logging module similar to
+&lt;dt&gt;&lt;a href="http://log4plsql.sourceforge.net/" class="externalLink"&gt;&lt;b&gt;log4plsql&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;Log4plsql is a Oracle PL/SQL logging module similar to
 log4j. It supports logging out-off transaction. It is useful
 for logging, benchmarking and monitoring PL/SQL applications.
 &lt;/dd&gt;
-
-
-
-&lt;dt&gt;&lt;a href="http://sourceforge.net/projects/qmmslog"&gt;&lt;b&gt;qmmslog&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;
-
-&lt;dd&gt;Qmmslog is a port of log4j to the Qt/C++ platform.
-&lt;/dd&gt;
-
-
-&lt;dt&gt;&lt;a href="http://log4r.sourceforge.net"&gt;&lt;b&gt;log4r&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;
-&lt;dd&gt;A Powerful Logger for Ruby. 
-  &lt;p&gt;Log4r features an extremely flexible logging library for
+&lt;dt&gt;&lt;a href="http://sourceforge.net/projects/qmmslog" class="externalLink"&gt;&lt;b&gt;qmmslog&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;Qmmslog is a port of log4j to the Qt/C++ platform.
+&lt;/dd&gt;
+&lt;dt&gt;&lt;a href="http://log4r.sourceforge.net" class="externalLink"&gt;&lt;b&gt;log4r&lt;/b&gt;
+&lt;/a&gt;
+&lt;/dt&gt;
+&lt;dd&gt;A Powerful Logger for Ruby. 
+  Log4r features an extremely flexible logging library for
     Ruby. Killer features include a heiarchial logging system
     of any number of levels, logger inheritance, multiple
     output destinations, tracing, custom formatting and more.
     Log4r was inspired by log4j. Log4r provides the defining
     features of log4j and some of its own features that just
-    might make log4j users envious.&lt;/p&gt;    
-&lt;/dd&gt;
-
-
-      &lt;/dl&gt;
-      
-      &lt;p&gt;If you would like your software to be listed here, then send a note to the &lt;a href="mailto:general&lt; at &gt;logging.apache.org"&gt;general&lt; at &gt;logging.apache.org&lt;/a&gt;
+    might make log4j users envious.&lt;/dd&gt;
+&lt;/dl&gt;
+&lt;p&gt;If you would like your software to be listed here, then send a note to the &lt;a href="mailto:general&lt; at &gt;logging.apache.org" class="externalLink"&gt;general&lt; at &gt;logging.apache.org&lt;/a&gt;
+
 list.&lt;/p&gt;
-      
-    &lt;/div&gt;
-    
-  
+&lt;/div&gt;
 
       &lt;/div&gt;
     &lt;/div&gt;
&lt; at &gt;&lt; at &gt; -525,7 +468,7 &lt; at &gt;&lt; at &gt;
     &lt;/div&gt;
     &lt;div id="footer"&gt;
       &lt;div class="xright"&gt;&amp;#169;  
-          2007
+          2008
     
           Apache Software Foundation
           
&lt; at &gt;&lt; at &gt; -535,6 +478,7 &lt; at &gt;&lt; at &gt;
     
   
   
+    
   &lt;/div&gt;
       &lt;div class="clear"&gt;
         &lt;hr/&gt;



</description>
    <dc:creator>carnold&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-08-12T17:24:58</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1157">
    <title>svn commit: r685229 - /logging/site/trunk/author/src/site/xdoc/catalog.xml</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1157</link>
    <description>Author: carnold
Date: Tue Aug 12 10:11:24 2008
New Revision: 685229

URL: http://svn.apache.org/viewvc?rev=685229&amp;view=rev
Log:
Bug 45352L Update Catalog URL for SNMPTrapAppender

Modified:
    logging/site/trunk/author/src/site/xdoc/catalog.xml

Modified: logging/site/trunk/author/src/site/xdoc/catalog.xml
URL: http://svn.apache.org/viewvc/logging/site/trunk/author/src/site/xdoc/catalog.xml?rev=685229&amp;r1=685228&amp;r2=685229&amp;view=diff
==============================================================================
--- logging/site/trunk/author/src/site/xdoc/catalog.xml (original)
+++ logging/site/trunk/author/src/site/xdoc/catalog.xml Tue Aug 12 10:11:24 2008
&lt; at &gt;&lt; at &gt; -160,7 +160,7 &lt; at &gt;&lt; at &gt;
 &lt;!-- ============================================================================== --&gt;
 
 
-&lt;dt&gt;&lt;a href="http://www.m2technologies.net/asp/snmpTrapAppender.asp"&gt;
+&lt;dt&gt;&lt;a href="http://code.google.com/p/log4j-snmp-trap-appender/"&gt;
     &lt;b&gt;SNMPTrapAppender&lt;/b&gt;&lt;/a&gt;
 &lt;/dt&gt;
 



</description>
    <dc:creator>carnold&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-08-12T17:11:25</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1156">
    <title>Documentation</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1156</link>
    <description>
The entire Logging Services Project has a bit of a problem with documentation.
Much of this is difficulty of finding information, but the project could use
more documentation in general. A particular problem is the use of auto
documentation that mixes user and developer information. As a user, I had a
difficult time sorting through class documentation that mostly dealt with
internals that I never needed to use.

A partial solution might be to use a wiki to document user information. Links
to the various API docs would allow people to dig deeper. One of the major
benefits of this approach is that one site could cover all of the log4 series
and common information (like configure files) would not have to be duplicated.
It would also be convenient to have some function call documentation show the
calls for different programming languages side by side.

Now as a long term MediaWiki user, MoinMoin sure seems primitive to me. Maybe
it
just a little work to make everything look nice. A key factor to consider is
whether wiki.apache.org is the right place for this as far as implied
endorsement. Also important is what license the content is under. I am a fan of
making documentation public domain (like the MediaWiki help pages), but I don't
know if that is a problem for ASF. I do know that a wiki full of Apache 2
license statements would be a pain in the arse.



--Matthew Vernon
sunergos&lt; at &gt;vernshome.net

</description>
    <dc:creator>Matthew Vernon</dc:creator>
    <dc:date>2008-07-24T22:00:22</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1155">
    <title>Re: Documentation</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1155</link>
    <description>honestly, I couldn't agree more with everything you have here, except  
I wish we had Confluence as a wiki (yes, this opens up spirited debate).

Paul

On 25/07/2008, at 8:00 AM, Matthew Vernon wrote:


Paul Smith
Core Engineering Manager

Aconex
The easy way to save time and money on your project

696 Bourke Street, Melbourne,
VIC 3000, Australia
Tel: +61 3 9240 0200  Fax: +61 3 9240 0299
Email: psmith&lt; at &gt;aconex.com  www.aconex.com

This email and any attachments are intended solely for the addressee.  
The contents may be privileged, confidential and/or subject to  
copyright or other applicable law. No confidentiality or privilege is  
lost by an erroneous transmission. If you have received this e-mail in  
error, please let us know by reply e-mail and delete or destroy this  
mail and all copies. If you are not the intended recipient of this  
message you must not disseminate, copy or take any action in reliance  
on it. The sender takes no responsibility for the effect of this  
message upon the recipient's computer system.



</description>
    <dc:creator>Paul Smith</dc:creator>
    <dc:date>2008-07-24T22:07:01</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1154">
    <title>svn commit: r673909 - /logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1154</link>
    <description>Author: sdeboy
Date: Thu Jul  3 22:26:14 2008
New Revision: 673909

URL: http://svn.apache.org/viewvc?rev=673909&amp;view=rev
Log:
When configuration URL changes, trigger a load of the configuration.

This doesn't clear the receivers tree, it just triggers a call to DOMConfigurator.configure.

Modified:
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java

Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java?rev=673909&amp;r1=673908&amp;r2=673909&amp;view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java Thu Jul  3 22:26:14 2008
&lt; at &gt;&lt; at &gt; -311,7 +311,7 &lt; at &gt;&lt; at &gt;
 });
     }
     
-    LogUI logUI = new LogUI();
+    final LogUI logUI = new LogUI();
     logUI.applicationPreferenceModel = model;
 
     if (model.isShowSplash()) {
&lt; at &gt;&lt; at &gt; -367,9 +367,26 &lt; at &gt;&lt; at &gt;
           URL configURL = new URL(config);
           logUI.loadConfigurationUsingPluginClassLoader(configURL);
         }catch(MalformedURLException e) {
-            logger.error("Failed to convert config string to url", e);
+            logger.error("Initial configuration - failed to convert config string to url", e);
         }
     }
+    
+    //register a listener to load the configuration when it changes (avoid having to restart Chainsaw when applying a new configuration)
+    //this doesn't remove receivers from receivers panel, it just triggers DOMConfigurator.configure.
+model.addPropertyChangeListener("configurationURL", new PropertyChangeListener() {
+        public void propertyChange(PropertyChangeEvent evt) {
+            String newConfiguration = evt.getNewValue().toString();
+            if (newConfiguration != null &amp;&amp; !(newConfiguration.trim().equals(""))) {
+                newConfiguration = newConfiguration.trim();
+                try {
+                    logger.info("loading updated configuration: " + newConfiguration);
+                    URL newConfigurationURL = new URL(newConfiguration);
+                    logUI.loadConfigurationUsingPluginClassLoader(newConfigurationURL);
+                } catch (MalformedURLException e) {
+                    logger.error("Updated configuration - failed to convert config string to URL", e);
+                }
+            }
+        }});
 
     if (config == null) {
       logger.info("No auto-configuration file found within the ApplicationPreferenceModel");



</description>
    <dc:creator>sdeboy&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-07-04T05:26:15</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1153">
    <title>svn commit: r673735 - /logging/chainsaw/trunk/src/main/resources/org/apache/log4j/chainsaw/help/tutorial.html</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1153</link>
    <description>Author: sdeboy
Date: Thu Jul  3 09:28:04 2008
New Revision: 673735

URL: http://svn.apache.org/viewvc?rev=673735&amp;view=rev
Log:
Add 'search' to tutorial and reordered topics

Modified:
    logging/chainsaw/trunk/src/main/resources/org/apache/log4j/chainsaw/help/tutorial.html

Modified: logging/chainsaw/trunk/src/main/resources/org/apache/log4j/chainsaw/help/tutorial.html
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/resources/org/apache/log4j/chainsaw/help/tutorial.html?rev=673735&amp;r1=673734&amp;r2=673735&amp;view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/resources/org/apache/log4j/chainsaw/help/tutorial.html (original)
+++ logging/chainsaw/trunk/src/main/resources/org/apache/log4j/chainsaw/help/tutorial.html Thu Jul  3 09:28:04 2008
&lt; at &gt;&lt; at &gt; -8,8 +8,9 &lt; at &gt;&lt; at &gt;
 &lt;p&gt;Welcome to the Chainsaw v2 Tutorial.  Here you will learn how to effectively utilise the many features of Chainsaw.&lt;/p&gt;
 &lt;/p&gt;
 &lt;p&gt;&lt;a href="#expressions"&gt;Expressions&lt;/a&gt;
-&lt;p&gt;&lt;a href="#color_filter"&gt;Color filters&lt;/a&gt;
+&lt;p&gt;&lt;a href="#search"&gt;Search&lt;/a&gt;
 &lt;p&gt;&lt;a href="#display_filter"&gt;Display filters&lt;/a&gt;
+&lt;p&gt;&lt;a href="#color_filter"&gt;Color filters&lt;/a&gt;
 &lt;h2&gt;Conventions&lt;/h2&gt;
 &lt;p&gt;To assist you, the following documentation conventions will be used&lt;/p&gt;
 &lt;ul&gt;
&lt; at &gt;&lt; at &gt; -198,6 +199,33 &lt; at &gt;&lt; at &gt;
 &lt;tr&gt;&lt;td&gt;To display events occurring at 23:55:12 on the 19th of June (all events generated during that second, regardless of millisecond value)&lt;/td&gt;&lt;td&gt;&lt;b&gt;TIMESTAMP == '2004/06/19 23:55:12'&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;/table&gt;
 
+&lt;A NAME="search"&gt;&lt;h3&gt;Search&lt;/h3&gt;
+&lt;p&gt;
+&lt;b&gt;How to search:&lt;/b&gt;&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;&lt;b&gt;Enter an expression&lt;/b&gt; in the text field of the main Chainsaw toolbar (a log panel must be selected)&lt;/li&gt;
+&lt;li&gt;Click the &lt;b&gt;down arrow icon&lt;/b&gt; or press &lt;b&gt;F3&lt;/b&gt; to search forward&lt;/li&gt;
+&lt;li&gt;Click the &lt;b&gt;up arrow icon&lt;/b&gt; or press &lt;b&gt;Shift+F3&lt;/b&gt; to search backward&lt;/li&gt;
+&lt;li&gt;The first matching row becomes selected, with matching rows displayed with white text on a black background&lt;/li&gt;
+&lt;li&gt;Subsequent forward or backward searches will navigate to the next match&lt;/li&gt;
+&lt;li&gt;To &lt;b&gt;clear the search highlighting&lt;/b&gt;, clear the text field and press &lt;b&gt;F3&lt;/b&gt;)&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;
+&lt;A NAME="display_filter"&gt;&lt;h3&gt;Display filters (refine focus)&lt;/h3&gt;
+Events displayed in the event panel can be filtered in two ways: by focusing on a logger in the logger tree panel and by defining display filter rules in the 'refine focus' field.  
+&lt;p&gt;
+&lt;b&gt;NOTE:&lt;/b&gt;Display filter rules are saved. 
+&lt;p&gt;
+&lt;b&gt;Define display rules:&lt;/b&gt;&lt;/p&gt;
+&lt;ol&gt;
+&lt;li&gt;Move the cursor to the 'refine focus on' field&lt;/li&gt;
+&lt;li&gt;Enter an expression (see &lt;a href="#expressions"&gt;Expressions&lt;/a&gt;) (use the right-mouse click or ctrl-space to activate a context menu which can assist in constructing expressions)&lt;/li&gt;
+&lt;li&gt;Alternatively, use the context (mouse right click) menu (available when the mouse pointer is over the events table) to modify the 'refine focus' field's expression based on the field and value under the mouse pointer.  For example, if the mouse pointer is over the THREAD cell of an event which has a value of Thread-1, selecting &lt;b&gt;set 'refine focus' field&lt;/b&gt; will assign the expression &lt;b&gt;THREAD == 'Thread-1'&lt;/b&gt; to the refine focus field.&lt;/li&gt;
+&lt;li&gt;The display will be updated automatically if the expression is valid and the contents of the 'refine focus' field have not changed for 1 second, showing only events which match the expression&lt;/li&gt;
+&lt;li&gt;If the expression entered is invalid, an error message will available as the 'refine focus on' field's tooltip&lt;/li&gt;
+&lt;li&gt;If the &lt;b&gt;ENTER&lt;/b&gt; key is pressed when a valid expression is in the 'refine focus on' field, the expression is added to the refine focus drop down list and can be recalled later in the session&lt;/li&gt;
+&lt;/ol&gt;
+
 &lt;A NAME="color_filter"&gt;&lt;h3&gt;Color filters&lt;/h3&gt;
 Each log panel can define color rules which can be used to colorize events in the event panel.  Color rules are associated with each event panel and are saved when the application ends and loaded automatically when the application starts.
 
&lt; at &gt;&lt; at &gt; -215,22 +243,6 &lt; at &gt;&lt; at &gt;
 &lt;li&gt;Fix errors as needed, apply and close the panel&lt;/li&gt;
 &lt;/ol&gt;
 
-&lt;A NAME="display_filter"&gt;&lt;h3&gt;Display filters (refine focus)&lt;/h3&gt;
-Events displayed in the event panel can be filtered in two ways: by focusing on a logger in the logger tree panel and by defining display filter rules in the 'refine focus' field.  
-&lt;p&gt;
-&lt;b&gt;NOTE:&lt;/b&gt;Display filter rules are not saved. 
-
-&lt;p&gt;
-&lt;b&gt;Define display rules:&lt;/b&gt;&lt;/p&gt;
-&lt;ol&gt;
-&lt;li&gt;Move the cursor to the 'refine focus on' field&lt;/li&gt;
-&lt;li&gt;Enter an expression (see &lt;a href="#expressions"&gt;Expressions&lt;/a&gt;)&lt;/li&gt;
-&lt;li&gt;Alternatively, use the context (mouse right click) menu (available when the mouse pointer is over the events table) to modify the 'refine focus' field's expression based on the field and value under the mouse pointer.  For example, if the mouse pointer is over the THREAD cell of an event which has a value of Thread-1, selecting &lt;b&gt;set 'refine focus' field&lt;/b&gt; will assign the expression &lt;b&gt;THREAD == 'Thread-1'&lt;/b&gt; to the refine focus field.&lt;/li&gt;
-&lt;li&gt;The display will be updated automatically if the expression is valid and the contents of the 'refine focus' field have not changed for 1 second, showing only events which match the expression&lt;/li&gt;
-&lt;li&gt;If the expression entered is invalid, an error message will available as the 'refine focus on' field's tooltip&lt;/li&gt;
-&lt;li&gt;If the &lt;b&gt;ENTER&lt;/b&gt; key is pressed when a valid expression is in the 'refine focus on' field, the expression is added to the refine focus drop down list and can be recalled later in the session&lt;/li&gt;
-&lt;/ol&gt;
-
 &lt;h2&gt;Shutting down the Tutorial&lt;/h2&gt;
 &lt;p&gt;
 When you are finished with the tutorial, you can simply shutdown all the Generator receivers:



</description>
    <dc:creator>sdeboy&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-07-03T16:28:04</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1152">
    <title>svn commit: r673734 - /logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1152</link>
    <description>Author: sdeboy
Date: Thu Jul  3 09:27:26 2008
New Revision: 673734

URL: http://svn.apache.org/viewvc?rev=673734&amp;view=rev
Log:
Entering an invalid expression in color filter panel caused entry with invalid expression to be removed when apply was pressed.  

Don't apply color filters until all expressions are valid.

Modified:
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java

Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java?rev=673734&amp;r1=673733&amp;r2=673734&amp;view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java Thu Jul  3 09:27:26 2008
&lt; at &gt;&lt; at &gt; -346,19 +346,22 &lt; at &gt;&lt; at &gt;
       }
     }
 
+    //all rules are valid, they can be applied
     if (result.toString().equals("")) {
       ((ExpressionTableCellRenderer) table.getColumnModel().getColumn(0).getCellRenderer())
       .setToolTipText("Double click to edit");
       statusBar.setText("");
+
+      //only update rules if there were no errors
+      Map map = new HashMap();
+      map.put(ruleSet, list);
+      colorizer.setRules(map);
+
     } else {
-      statusBar.setText("Errors - see expression tooltip");
+      statusBar.setText("Errors - see expression tooltip (color filters won't be active until errors are resolved)");
       ((ExpressionTableCellRenderer) table.getColumnModel().getColumn(0).getCellRenderer())
       .setToolTipText("&lt;html&gt;" + result.toString() + "&lt;/html&gt;");
     }
-    Map map = new HashMap();
-    map.put(ruleSet, list);
-
-    colorizer.setRules(map);
   }
 
   JPanel buildClosePanel() {



</description>
    <dc:creator>sdeboy&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-07-03T16:27:26</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1151">
    <title>svn commit: r673720 - /logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1151</link>
    <description>Author: sdeboy
Date: Thu Jul  3 08:50:38 2008
New Revision: 673720

URL: http://svn.apache.org/viewvc?rev=673720&amp;view=rev
Log:
Change background of search and refine focus fields to light-red if an invalid expression is entered, reset background color to default when valid or empty

Modified:
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java

Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java?rev=673720&amp;r1=673719&amp;r2=673720&amp;view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java Thu Jul  3 08:50:38 2008
&lt; at &gt;&lt; at &gt; -18,6 +18,7 &lt; at &gt;&lt; at &gt;
 package org.apache.log4j.chainsaw;
 
 import java.awt.BorderLayout;
+import java.awt.Color;
 import java.awt.Component;
 import java.awt.Container;
 import java.awt.Dimension;
&lt; at &gt;&lt; at &gt; -98,6 +99,7 &lt; at &gt;&lt; at &gt;
 import javax.swing.ListSelectionModel;
 import javax.swing.SwingConstants;
 import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
 import javax.swing.WindowConstants;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.DocumentEvent;
&lt; at &gt;&lt; at &gt; -239,6 +241,7 &lt; at &gt;&lt; at &gt;
   private final DateFormat timestampExpressionFormat = new SimpleDateFormat(Constants.TIMESTAMP_RULE_FORMAT);
   private final Logger logger = LogManager.getLogger(LogPanel.class);
   private final Vector filterExpressionVector;
+  private static final Color INVALID_EXPRESSION_BACKGROUND = new Color(251, 186, 186);
 
   /**
    * Creates a new LogPanel object.  If a LogPanel with this identifier has
&lt; at &gt;&lt; at &gt; -935,10 +938,13 &lt; at &gt;&lt; at &gt;
             if (e.getActionCommand().equals("comboBoxEdited")) {
               try {
                 //verify the expression is valid
-                ExpressionRule.getRule(
-                  filterCombo.getSelectedItem().toString());
+                ExpressionRule.getRule(filterCombo.getSelectedItem().toString());
+                //valid expression, reset background color in case we were previously an invalid expression
+                filterText.setBackground(UIManager.getColor("TextField.background"));
               } catch (IllegalArgumentException iae) {
-                //don't add expressions that aren't valid
+                  //don't add expressions that aren't valid
+                  //invalid expression, change background of the field
+                  filterText.setBackground(INVALID_EXPRESSION_BACKGROUND);
                 return;
               }
 
&lt; at &gt;&lt; at &gt; -1771,9 +1777,11 &lt; at &gt;&lt; at &gt;
   }
 
   public boolean updateRule(String ruleText) {
-    if ((ruleText == null) || (ruleText.equals(""))) {
+    if ((ruleText == null) || (ruleText.trim().equals(""))) {
       findRule = null;
       colorizer.setFindRule(null);
+      //reset background color in case we were previously an invalid expression
+      findField.setBackground(UIManager.getColor("TextField.background"));
       findField.setToolTipText(
         "Enter expression - right click or ctrl-space for menu");
       return false;
&lt; at &gt;&lt; at &gt; -1785,10 +1793,13 &lt; at &gt;&lt; at &gt;
           "Enter expression - right click or ctrl-space for menu");
         findRule = ExpressionRule.getRule(ruleText);
         colorizer.setFindRule(findRule);
-
+        //valid expression, reset background color in case we were previously an invalid expression
+        findField.setBackground(UIManager.getColor("TextField.background"));
         return true;
       } catch (IllegalArgumentException re) {
         findField.setToolTipText(re.getMessage());
+        //invalid expression, change background of the field
+        findField.setBackground(INVALID_EXPRESSION_BACKGROUND);
         colorizer.setFindRule(null);
 
         return false;
&lt; at &gt;&lt; at &gt; -2474,7 +2485,9 &lt; at &gt;&lt; at &gt;
      * Update refinement rule based on the entered expression.
      */
     private void setFilter() {
-      if (filterText.getText().equals("")) {
+      if (filterText.getText().trim().equals("")) {
+        //reset background color in case we were previously an invalid expression
+        filterText.setBackground(UIManager.getColor("TextField.background"));
         ruleMediator.setRefinementRule(null);
         filterText.setToolTipText(defaultToolTip);
       } else {
&lt; at &gt;&lt; at &gt; -2482,7 +2495,11 &lt; at &gt;&lt; at &gt;
           ruleMediator.setRefinementRule(
             ExpressionRule.getRule(filterText.getText()));
           filterText.setToolTipText(defaultToolTip);
+          //valid expression, reset background color in case we were previously an invalid expression
+          filterText.setBackground(UIManager.getColor("TextField.background"));
         } catch (IllegalArgumentException iae) {
+          //invalid expression, change background of the field
+          filterText.setBackground(INVALID_EXPRESSION_BACKGROUND);
           filterText.setToolTipText(iae.getMessage());
         }
       }



</description>
    <dc:creator>sdeboy&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-07-03T15:50:38</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1150">
    <title>svn commit: r673568 - in /logging/chainsaw/trunk: pom.xml src/assembly/bin.xml src/assembly/standalone.xml</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1150</link>
    <description>Author: psmith
Date: Wed Jul  2 19:51:39 2008
New Revision: 673568

URL: http://svn.apache.org/viewvc?rev=673568&amp;view=rev
Log:
Modified the bin.xml assembly so it doesn't get a 'name', and introduced a standalone assembly
that is the packaged up bit of the appassembler plugin for ease of deployment.  this artifact
is also added to the list of published artifacts via the buildhelper plugin.

Finally worked out how to get Chainsaw to bundle the Receivers JavaDoc, and as it turns out it's so
simple I can't believe it's taken me or anyone else this long to work out.  The JavaDoc, like the sources,
are simply classified artifacts of a project, so we just indicate a dependency on log4j-receivers javadoc classified
artifact.  Viola, packaged JavaDoc for the Receivers inside Chainsaw.  Neat.


Added:
    logging/chainsaw/trunk/src/assembly/standalone.xml
Modified:
    logging/chainsaw/trunk/pom.xml
    logging/chainsaw/trunk/src/assembly/bin.xml

Modified: logging/chainsaw/trunk/pom.xml
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/pom.xml?rev=673568&amp;r1=673567&amp;r2=673568&amp;view=diff
==============================================================================
--- logging/chainsaw/trunk/pom.xml (original)
+++ logging/chainsaw/trunk/pom.xml Wed Jul  2 19:51:39 2008
&lt; at &gt;&lt; at &gt; -4,7 +4,7 &lt; at &gt;&lt; at &gt;
   &lt;groupId&gt;log4j&lt;/groupId&gt;
   &lt;artifactId&gt;apache-chainsaw&lt;/artifactId&gt;
   &lt;name&gt;Apache Chainsaw&lt;/name&gt;
-  &lt;version&gt;1.99.0&lt;/version&gt;
+  &lt;version&gt;1.99.0-SNAPSHOT&lt;/version&gt;
   &lt;description&gt;Graphical Viewer for Logging events from a local or remote log4j event system.&lt;/description&gt;
   &lt;url&gt;http://logging.apache.org:80/chainsaw&lt;/url&gt;
   &lt;issueManagement&gt;
&lt; at &gt;&lt; at &gt; -179,6 +179,7 &lt; at &gt;&lt; at &gt;
         &lt;artifactId&gt;maven-assembly-plugin&lt;/artifactId&gt;
         &lt;executions&gt;
           &lt;execution&gt;
+&lt;phase&gt;package&lt;/phase&gt;
             &lt;goals&gt;
               &lt;goal&gt;assembly&lt;/goal&gt;
             &lt;/goals&gt;
&lt; at &gt;&lt; at &gt; -187,8 +188,11 &lt; at &gt;&lt; at &gt;
         &lt;configuration&gt;
           &lt;descriptors&gt;
             &lt;descriptor&gt;src/assembly/bin.xml&lt;/descriptor&gt;
+&lt;descriptor&gt;src/assembly/standalone.xml&lt;/descriptor&gt;
           &lt;/descriptors&gt;
-          &lt;appendAssemblyId&gt;false&lt;/appendAssemblyId&gt;
+&lt;!-- we append the assembly ID here,but note that the bin assembly does not have an id specified
+in its config, so it doesn't have a suffix --&gt;
+          &lt;appendAssemblyId&gt;true&lt;/appendAssemblyId&gt;
         &lt;/configuration&gt;
       &lt;/plugin&gt;
       &lt;plugin&gt;
&lt; at &gt;&lt; at &gt; -203,6 +207,28 &lt; at &gt;&lt; at &gt;
         &lt;/executions&gt;
       &lt;/plugin&gt;
       &lt;plugin&gt;
+        &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
+        &lt;artifactId&gt;build-helper-maven-plugin&lt;/artifactId&gt;
+        &lt;executions&gt;
+          &lt;execution&gt;
+            &lt;id&gt;attach-artifacts&lt;/id&gt;
+            &lt;phase&gt;package&lt;/phase&gt;
+            &lt;goals&gt;
+              &lt;goal&gt;attach-artifact&lt;/goal&gt;
+            &lt;/goals&gt;
+            &lt;configuration&gt;
+              &lt;artifacts&gt;
+                &lt;artifact&gt;
+                  &lt;file&gt;target/${project.artifactId}-${project.version}-standalone.zip&lt;/file&gt;
+                  &lt;type&gt;zip&lt;/type&gt;
+                  &lt;classifier&gt;standalone&lt;/classifier&gt;
+                &lt;/artifact&gt;
+              &lt;/artifacts&gt;
+            &lt;/configuration&gt;
+          &lt;/execution&gt;
+        &lt;/executions&gt;
+      &lt;/plugin&gt;
+      &lt;plugin&gt;
         &lt;artifactId&gt;maven-source-plugin&lt;/artifactId&gt;
         &lt;executions&gt;
           &lt;execution&gt;
&lt; at &gt;&lt; at &gt; -224,6 +250,7 &lt; at &gt;&lt; at &gt;
           &lt;/execution&gt;
         &lt;/executions&gt;
         &lt;configuration&gt;
+          &lt;showConsoleWindow&gt;false&lt;/showConsoleWindow&gt;
           &lt;programs&gt;
             &lt;program&gt;
               &lt;mainClass&gt;${chainsaw.mainclass}&lt;/mainClass&gt;
&lt; at &gt;&lt; at &gt; -310,6 +337,12 &lt; at &gt;&lt; at &gt;
     &lt;/dependency&gt;
     &lt;dependency&gt;
       &lt;groupId&gt;log4j&lt;/groupId&gt;
+      &lt;artifactId&gt;apache-log4j-receivers&lt;/artifactId&gt;
+      &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
+      &lt;classifier&gt;javadoc&lt;/classifier&gt;
+    &lt;/dependency&gt;
+    &lt;dependency&gt;
+      &lt;groupId&gt;log4j&lt;/groupId&gt;
       &lt;artifactId&gt;apache-log4j-zeroconf&lt;/artifactId&gt;
       &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
     &lt;/dependency&gt;

Modified: logging/chainsaw/trunk/src/assembly/bin.xml
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/assembly/bin.xml?rev=673568&amp;r1=673567&amp;r2=673568&amp;view=diff
==============================================================================
--- logging/chainsaw/trunk/src/assembly/bin.xml (original)
+++ logging/chainsaw/trunk/src/assembly/bin.xml Wed Jul  2 19:51:39 2008
&lt; at &gt;&lt; at &gt; -16,12 +16,14 &lt; at &gt;&lt; at &gt;
 
 --&gt;
 &lt;assembly&gt;
-&lt;id&gt;bin&lt;/id&gt;
+&lt;!-- We deliberately don't specify an ID here, because during the assembly process we don't want the
+bin assembly to have any suffix on its name. Other assemblies need their Id suffixed, but this one
+doesn't 
+&lt;id&gt;bin&lt;/id&gt; --&gt;
 &lt;formats&gt;
 &lt;format&gt;zip&lt;/format&gt;
 &lt;format&gt;tar.gz&lt;/format&gt;
 &lt;/formats&gt;
-&lt;baseDirectory&gt;apache-chainsaw-${project.version}&lt;/baseDirectory&gt;
 &lt;includeSiteDirectory&gt;true&lt;/includeSiteDirectory&gt;
 &lt;dependencySets&gt;
    &lt;dependencySet/&gt;

Added: logging/chainsaw/trunk/src/assembly/standalone.xml
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/assembly/standalone.xml?rev=673568&amp;view=auto
==============================================================================
--- logging/chainsaw/trunk/src/assembly/standalone.xml (added)
+++ logging/chainsaw/trunk/src/assembly/standalone.xml Wed Jul  2 19:51:39 2008
&lt; at &gt;&lt; at &gt; -0,0 +1,38 &lt; at &gt;&lt; at &gt;
+&lt;?xml version="1.0"?&gt;
+&lt;!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+--&gt;
+&lt;assembly&gt;
+  &lt;id&gt;standalone&lt;/id&gt;
+  &lt;formats&gt;
+    &lt;format&gt;zip&lt;/format&gt;
+    &lt;format&gt;tar.gz&lt;/format&gt;
+  &lt;/formats&gt;
+  &lt;includeBaseDirectory&gt;true&lt;/includeBaseDirectory&gt;
+  &lt;fileSets&gt;
+    &lt;fileSet&gt;
+      &lt;directory&gt;target/appassembler/bin&lt;/directory&gt;
+      &lt;outputDirectory&gt;bin&lt;/outputDirectory&gt;
+      &lt;lineEnding&gt;unix&lt;/lineEnding&gt;
+      &lt;fileMode&gt;0755&lt;/fileMode&gt;
+    &lt;/fileSet&gt;
+    &lt;fileSet&gt;
+      &lt;directory&gt;target/appassembler/repo&lt;/directory&gt;
+      &lt;outputDirectory&gt;repo&lt;/outputDirectory&gt;
+    &lt;/fileSet&gt;
+  &lt;/fileSets&gt;
+&lt;/assembly&gt;



</description>
    <dc:creator>psmith&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-07-03T02:51:40</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1149">
    <title>svn commit: r673567 - /logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1149</link>
    <description>Author: sdeboy
Date: Wed Jul  2 19:44:27 2008
New Revision: 673567

URL: http://svn.apache.org/viewvc?rev=673567&amp;view=rev
Log:
Update JavaDocs to clarify receiver params

Modified:
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java

Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java?rev=673567&amp;r1=673566&amp;r2=673567&amp;view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java Wed Jul  2 19:44:27 2008
&lt; at &gt;&lt; at &gt; -93,7 +93,7 &lt; at &gt;&lt; at &gt;
  * &lt;p&gt;
  * &lt;b&gt;Features:&lt;/b&gt;&lt;br&gt;
  * - specify the URL of the log file to be processed&lt;br&gt;
- * - specify the timestamp format in the file (if one exists)&lt;br&gt;
+ * - specify the timestamp format in the file (if one exists, using patterns from {&lt; at &gt;link java.text.SimpleDateFormat})&lt;br&gt;
  * - specify the pattern (logFormat) used in the log file using keywords, a wildcard character (*) and fixed text&lt;br&gt;
  * - 'tail' the file (allows the contents of the file to be continually read and new events processed)&lt;br&gt;
  * - supports the parsing of multi-line messages and exceptions



</description>
    <dc:creator>sdeboy&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-07-03T02:44:28</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1148">
    <title>svn commit: r670416 - /logging/chainsaw/trunk/HOWTOBUILD.txt</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1148</link>
    <description>Author: psmith
Date: Sun Jun 22 14:23:49 2008
New Revision: 670416

URL: http://svn.apache.org/viewvc?rev=670416&amp;view=rev
Log:
Updated HOWTOBUILD.txt to reflect some dependency build information change.


Modified:
    logging/chainsaw/trunk/HOWTOBUILD.txt

Modified: logging/chainsaw/trunk/HOWTOBUILD.txt
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/HOWTOBUILD.txt?rev=670416&amp;r1=670415&amp;r2=670416&amp;view=diff
==============================================================================
--- logging/chainsaw/trunk/HOWTOBUILD.txt (original)
+++ logging/chainsaw/trunk/HOWTOBUILD.txt Sun Jun 22 14:23:49 2008
&lt; at &gt;&lt; at &gt; -16,8 +16,11 &lt; at &gt;&lt; at &gt;
 log4j-receivers - http://svn.apache.org/repos/asf/logging/log4j/companions/receivers/trunk/
 log4j-filters - http://svn.apache.org/repos/asf/logging/log4j/companions/filters/trunk/
 log4j-zeroconf - http://svn.apache.org/repos/asf/logging/log4j/companions/zeroconf/trunk/
+
+  while Chainsaw has a marked dependency on log4j 1.2.15, building log4j-zeroconf requires log4j 1.2.16-SNAPSHOT, so you will also need to get:
+  
+  log4j - https://svn.apache.org/repos/asf/logging/log4j/trunk
 
-log4j 1.2.15 - http://svn.apache.org/repos/asf/logging/log4j/branches/v1_2-branch/
 
   In each of these checkout directories:
   mvn install
&lt; at &gt;&lt; at &gt; -26,14 +29,8 &lt; at &gt;&lt; at &gt;
   These dependencies are not yet available in the standard maven repositories, and so failure to complete this 
   step will prevent you from building Chainsaw.
 
-* Create the Receivers javadoc that needs to be embedded into chainsaw 
-
-  cd log4j-receivers
-  mvn package javadoc:jar
-
-  mvn install:install-file -DgroupId=log4j -DartifactId=apache-log4j-receivers-javadoc -Dpackaging=jar -Dversion=1.0-SNAPSHOT -Dfile=target/apache-log4j-receivers-1.0-SNAPSHOT-javadoc.jar
 
-* Back into the log4j-chainsaw check where this document you are reading is placed:
+* cd to Chainsaw project checkout directory
 
 mvn install
 



</description>
    <dc:creator>psmith&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-06-22T21:23:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1147">
    <title>svn commit: r668059 - in /logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw: LogPanel.java LogPanelPreferenceModel.java LogPanelPreferencePanel.java TableColorizingRenderer.java</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1147</link>
    <description>Author: sdeboy
Date: Sun Jun 15 23:28:41 2008
New Revision: 668059

URL: http://svn.apache.org/viewvc?rev=668059&amp;view=rev
Log:
New log panel preference: time zone of events on tab
Allows a user to specify (via the timezone abbreviation) the time zone of events on the tab, providing the ability to view logs in local time.

For example, if events are from a log file which is in GMT, and you're in PST, set the time zone preference to GMT and the timestamp field for events on that tab will be rendered +7 hours ahead of the actual event timestamp values.

Modified:
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferenceModel.java
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferencePanel.java
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java

Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java?rev=668059&amp;r1=668058&amp;r2=668059&amp;view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java Sun Jun 15 23:28:41 2008
&lt; at &gt;&lt; at &gt; -112,15 +112,13 &lt; at &gt;&lt; at &gt;
 import javax.swing.table.TableColumnModel;
 import javax.swing.text.Document;
 
-import com.thoughtworks.xstream.XStream;
-import com.thoughtworks.xstream.io.xml.DomDriver;
-
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
 import org.apache.log4j.PatternLayout;
 import org.apache.log4j.chainsaw.color.ColorPanel;
 import org.apache.log4j.chainsaw.color.RuleColorizer;
 import org.apache.log4j.chainsaw.filter.FilterModel;
+import org.apache.log4j.chainsaw.helper.SwingHelper;
 import org.apache.log4j.chainsaw.icons.ChainsawIcons;
 import org.apache.log4j.chainsaw.icons.LineIconFactory;
 import org.apache.log4j.chainsaw.layout.DefaultLayoutFactory;
&lt; at &gt;&lt; at &gt; -132,13 +130,15 &lt; at &gt;&lt; at &gt;
 import org.apache.log4j.chainsaw.prefs.SaveSettingsEvent;
 import org.apache.log4j.chainsaw.prefs.SettingsManager;
 import org.apache.log4j.chainsaw.xstream.TableColumnConverter;
-import org.apache.log4j.chainsaw.helper.SwingHelper;
 import org.apache.log4j.helpers.Constants;
 import org.apache.log4j.rule.ExpressionRule;
 import org.apache.log4j.rule.Rule;
 import org.apache.log4j.spi.LoggingEvent;
 import org.apache.log4j.spi.LoggingEventFieldResolver;
 
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+
 
 /**
  * A LogPanel provides a view to a collection of LoggingEvents.&lt;br&gt;
&lt; at &gt;&lt; at &gt; -475,6 +475,10 &lt; at &gt;&lt; at &gt;
           simpleTimeButton.setSelected(
             !model.isUseISO8601Format() &amp;&amp; !model.isCustomDateFormat());
 
+          if (model.getTimeZone() != null) {
+            renderer.setTimeZone(model.getTimeZone());
+          }
+          
           if (model.isUseISO8601Format()) {
             renderer.setDateFormatter(new SimpleDateFormat(Constants.ISO8601_PATTERN));
           } else {
&lt; at &gt;&lt; at &gt; -493,8 +497,7 &lt; at &gt;&lt; at &gt;
 
     preferenceModel.addPropertyChangeListener(
       "dateFormatPattern", datePrefsChangeListener);
-    preferenceModel.addPropertyChangeListener(
-      "dateFormatPattern", datePrefsChangeListener);
+    preferenceModel.addPropertyChangeListener("dateFormatTimeZone", datePrefsChangeListener);
 
     preferenceModel.addPropertyChangeListener(
       "loggerPrecision",

Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferenceModel.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferenceModel.java?rev=668059&amp;r1=668058&amp;r2=668059&amp;view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferenceModel.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferenceModel.java Sun Jun 15 23:28:41 2008
&lt; at &gt;&lt; at &gt; -77,6 +77,7 &lt; at &gt;&lt; at &gt;
   private String loggerPrecision = "";
 
   private Collection hiddenLoggers = new HashSet();
+  private String timeZone;
   
   /**
    * Returns an &lt;b&gt;unmodifiable&lt;/b&gt; list of the columns.
&lt; at &gt;&lt; at &gt; -215,6 +216,7 &lt; at &gt;&lt; at &gt;
     setLoggerPrecision(model.getLoggerPrecision());
     setDateFormatPattern(model.getDateFormatPattern());
     setLevelIcons(model.isLevelIcons());
+    setTimeZone(model.getTimeZone());
     setToolTips(model.isToolTips());
     setScrollToBottom(model.isScrollToBottom());
     setDetailPaneVisible(model.isDetailPaneVisible());
&lt; at &gt;&lt; at &gt; -395,7 +397,17 &lt; at &gt;&lt; at &gt;
       propertySupport.firePropertyChange("hiddenLoggers", oldValue, this.hiddenLoggers);
   }
 
-public Collection getHiddenLoggers() {
+  public Collection getHiddenLoggers() {
     return hiddenLoggers;
-}
+  }
+
+  public String getTimeZone() {
+    return timeZone;
+  }
+  
+  public void setTimeZone(String timeZone) {
+      Object oldValue = this.timeZone;
+      this.timeZone = timeZone;
+      propertySupport.firePropertyChange("dateFormatTimeZone", oldValue, this.timeZone);
+  }
 }

Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferencePanel.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferencePanel.java?rev=668059&amp;r1=668058&amp;r2=668059&amp;view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferencePanel.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferencePanel.java Sun Jun 15 23:28:41 2008
&lt; at &gt;&lt; at &gt; -18,7 +18,6 &lt; at &gt;&lt; at &gt;
 
 import java.awt.Component;
 import java.awt.Dimension;
-import java.awt.FlowLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.InputEvent;
&lt; at &gt;&lt; at &gt; -41,6 +40,7 &lt; at &gt;&lt; at &gt;
 import javax.swing.JRadioButton;
 import javax.swing.JScrollPane;
 import javax.swing.JTextField;
+import javax.swing.SwingConstants;
 import javax.swing.table.TableColumn;
 import javax.swing.tree.DefaultMutableTreeNode;
 import javax.swing.tree.DefaultTreeModel;
&lt; at &gt;&lt; at &gt; -223,11 +223,12 &lt; at &gt;&lt; at &gt;
     //~ Instance fields =======================================================
 
     private JTextField customFormatText = new JTextField("", 10);
-    private JTextField loggerPrecision = new JTextField(5);
+    private JTextField loggerPrecision = new JTextField(10);
     private JRadioButton rdCustom = new JRadioButton("Custom Format");
     private final JRadioButton rdISO =
       new JRadioButton(
         "&lt;html&gt;&lt;b&gt;Fast&lt;/b&gt; ISO 8601 format (yyyy-MM-dd HH:mm:ss)&lt;/html&gt;");
+    private final JTextField timeZone = new JTextField(10);
     private final JRadioButton rdLevelIcons = new JRadioButton("Icons");
     private final JRadioButton rdLevelText = new JRadioButton("Text");
     private JRadioButton rdLast;
&lt; at &gt;&lt; at &gt; -248,25 +249,18 &lt; at &gt;&lt; at &gt;
       setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
 
       JPanel dateFormatPanel = new JPanel();
+      dateFormatPanel.setLayout(new BoxLayout(dateFormatPanel, BoxLayout.Y_AXIS));
       dateFormatPanel.setBorder(
         BorderFactory.createTitledBorder(
           BorderFactory.createEtchedBorder(), "Timestamp"));
-      dateFormatPanel.setLayout(
-        new BoxLayout(dateFormatPanel, BoxLayout.Y_AXIS));
-      dateFormatPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
-
-      customFormatText.setPreferredSize(new Dimension(100, 20));
-      customFormatText.setMaximumSize(customFormatText.getPreferredSize());
-      customFormatText.setMinimumSize(customFormatText.getPreferredSize());
-      customFormatText.setEnabled(false);
-
-      rdCustom.setSelected(preferenceModel.isCustomDateFormat());
 
       ButtonGroup bgDateFormat = new ButtonGroup();
 
-      rdISO.setAlignmentX(0);
       rdISO.setSelected(preferenceModel.isUseISO8601Format());
 
+      rdISO.setHorizontalTextPosition(SwingConstants.RIGHT);
+      rdISO.setAlignmentX(Component.LEFT_ALIGNMENT);      
+
       bgDateFormat.add(rdISO);
       dateFormatPanel.add(rdISO);
 
&lt; at &gt;&lt; at &gt; -276,9 +270,9 &lt; at &gt;&lt; at &gt;
       {
         final String format = (String) iter.next();
         final JRadioButton rdFormat = new JRadioButton(format);
-        rdFormat.setAlignmentX(0);
+        rdFormat.setHorizontalTextPosition(SwingConstants.RIGHT);
+        rdFormat.setAlignmentX(Component.LEFT_ALIGNMENT);      
 
-        bgDateFormat.add(rdFormat);
         rdFormat.addActionListener(new ActionListener()
           {
             public void actionPerformed(ActionEvent e)
&lt; at &gt;&lt; at &gt; -302,8 +296,17 &lt; at &gt;&lt; at &gt;
           });
 
         dateFormatPanel.add(rdFormat);
+        bgDateFormat.add(rdFormat);
       }
 
+      customFormatText.setPreferredSize(new Dimension(100, 20));
+      customFormatText.setMaximumSize(customFormatText.getPreferredSize());
+      customFormatText.setMinimumSize(customFormatText.getPreferredSize());
+      customFormatText.setEnabled(false);
+
+      bgDateFormat.add(rdCustom);
+      rdCustom.setSelected(preferenceModel.isCustomDateFormat());
+
       // add a custom date format
       if (preferenceModel.isCustomDateFormat())
       {
&lt; at &gt;&lt; at &gt; -311,19 +314,22 &lt; at &gt;&lt; at &gt;
         customFormatText.setEnabled(true);
       }
 
-      rdCustom.setAlignmentX(0);
-      bgDateFormat.add(rdCustom);
-
-      Box customBox = Box.createHorizontalBox();
-
-      //      Following does not work in JDK 1.3.1
-      //      customBox.setAlignmentX(0);
-      customBox.add(rdCustom);
-      customBox.add(customFormatText);
-      customBox.add(Box.createHorizontalGlue());
-      dateFormatPanel.add(customBox);
-
-      //      dateFormatPanel.add(Box.createVerticalGlue());
+      JPanel customPanel = new JPanel();
+      customPanel.setLayout(new BoxLayout(customPanel, BoxLayout.X_AXIS));
+      customPanel.add(rdCustom);
+      customPanel.add(customFormatText);
+      customPanel.setAlignmentX(Component.LEFT_ALIGNMENT);      
+
+      dateFormatPanel.add(customPanel);
+      dateFormatPanel.add(Box.createVerticalStrut(5));
+
+      JLabel dateFormatLabel = new JLabel("Time zone of events on tab (leave blank for local time zone");
+      dateFormatPanel.add(dateFormatLabel);
+
+      timeZone.setMaximumSize(timeZone.getPreferredSize());
+      dateFormatPanel.add(Box.createVerticalStrut(5));
+      dateFormatPanel.add(timeZone);
+      
       add(dateFormatPanel);
 
       JPanel levelFormatPanel = new JPanel();
&lt; at &gt;&lt; at &gt; -353,21 +359,18 &lt; at &gt;&lt; at &gt;
           BorderFactory.createEtchedBorder(), "Logger"));
       loggerFormatPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
 
+      loggerFormatPanel.add(Box.createVerticalStrut(3));
+
       final JLabel precisionLabel =
-        new JLabel("Number of package levels to hide)");
-      final JLabel precisionLabel2 =
-        new JLabel("leave blank to display full logger");
+        new JLabel("Number of package levels to hide (leave blank to display full logger)");
 
       loggerFormatPanel.add(precisionLabel);
-      loggerFormatPanel.add(precisionLabel2);
+      loggerFormatPanel.add(Box.createVerticalStrut(5));
 
-      JPanel p = new JPanel(new FlowLayout(FlowLayout.LEFT));
-
-      p.add(loggerPrecision);
-      loggerFormatPanel.add(p);
+      loggerPrecision.setMaximumSize(loggerPrecision.getPreferredSize());
+      loggerFormatPanel.add(loggerPrecision);
 
       add(loggerFormatPanel);
-
       add(Box.createVerticalGlue());
     }
 
&lt; at &gt;&lt; at &gt; -386,6 +389,7 &lt; at &gt;&lt; at &gt;
     }
     
     loggerPrecision.setText(preferenceModel.getLoggerPrecision());
+    timeZone.setText(preferenceModel.getTimeZone());
     }
 
     /*
&lt; at &gt;&lt; at &gt; -396,6 +400,7 &lt; at &gt;&lt; at &gt;
     preferenceModel.setDateFormatPattern(customFormatText.getText());
     }
     preferenceModel.setLoggerPrecision(loggerPrecision.getText());
+    preferenceModel.setTimeZone(timeZone.getText());
     }
 
     /**
&lt; at &gt;&lt; at &gt; -468,6 +473,13 &lt; at &gt;&lt; at &gt;
             rdLast = rdISO;
           }
         });
+      preferenceModel.addPropertyChangeListener(
+          "dateFormatTimeZone", new PropertyChangeListener() {
+              public void propertyChange(PropertyChangeEvent evt) {
+                  timeZone.setText(preferenceModel.getTimeZone());
+              }
+          }
+      );
 
       ActionListener levelIconListener = new ActionListener()
         {

Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java?rev=668059&amp;r1=668058&amp;r2=668059&amp;view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java Sun Jun 15 23:28:41 2008
&lt; at &gt;&lt; at &gt; -17,19 +17,13 &lt; at &gt;&lt; at &gt;
 
 package org.apache.log4j.chainsaw;
 
-import org.apache.log4j.chainsaw.color.Colorizer;
-import org.apache.log4j.chainsaw.icons.LevelIconFactory;
-import org.apache.log4j.helpers.Constants;
-import org.apache.log4j.spi.LoggingEvent;
-
 import java.awt.Color;
 import java.awt.Component;
-
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
-
 import java.util.Date;
 import java.util.Map;
+import java.util.TimeZone;
 
 import javax.swing.BorderFactory;
 import javax.swing.Icon;
&lt; at &gt;&lt; at &gt; -38,6 +32,11 &lt; at &gt;&lt; at &gt;
 import javax.swing.SwingConstants;
 import javax.swing.table.DefaultTableCellRenderer;
 
+import org.apache.log4j.chainsaw.color.Colorizer;
+import org.apache.log4j.chainsaw.icons.LevelIconFactory;
+import org.apache.log4j.helpers.Constants;
+import org.apache.log4j.spi.LoggingEvent;
+
 
 /**
  * A specific TableCellRenderer that colourizes a particular cell based on
&lt; at &gt;&lt; at &gt; -60,6 +59,7 &lt; at &gt;&lt; at &gt;
   private DateFormat dateFormatInUse = DATE_FORMATTER;
   private int loggerPrecision = 0;
   private boolean toolTipsVisible;
+  private String dateFormatTZ;
 
   /**
    * Creates a new TableColorizingRenderer object.
&lt; at &gt;&lt; at &gt; -197,6 +197,11 &lt; at &gt;&lt; at &gt;
    */
   void setDateFormatter(DateFormat formatter) {
     this.dateFormatInUse = formatter;
+    if (dateFormatInUse != null &amp;&amp; dateFormatTZ != null &amp;&amp; !("".equals(dateFormatTZ))) {
+      dateFormatInUse.setTimeZone(TimeZone.getTimeZone(dateFormatTZ));
+    } else {
+      dateFormatInUse.setTimeZone(TimeZone.getDefault());
+    }
   }
 
   /**
&lt; at &gt;&lt; at &gt; -222,6 +227,7 &lt; at &gt;&lt; at &gt;
     if (!(o instanceof Date)) {
       return (o == null ? "" : o);
     }
+    
     return dateFormatInUse.format((Date) o);
   }
 
&lt; at &gt;&lt; at &gt; -240,4 +246,14 &lt; at &gt;&lt; at &gt;
   public void setLevelUseIcons(boolean levelUseIcons) {
     this.levelUseIcons = levelUseIcons;
   }
+
+  public void setTimeZone(String dateFormatTZ) {
+    this.dateFormatTZ = dateFormatTZ;
+
+    if (dateFormatInUse != null &amp;&amp; dateFormatTZ != null &amp;&amp; !("".equals(dateFormatTZ))) {
+      dateFormatInUse.setTimeZone(TimeZone.getTimeZone(dateFormatTZ));
+    } else {
+      dateFormatInUse.setTimeZone(TimeZone.getDefault());
+    }
+  }
 }



</description>
    <dc:creator>sdeboy&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-06-16T06:28:42</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1146">
    <title>svn commit: r660371 - in /logging/site/trunk: author/src/site/resources/log4j/docs/webstart/chainsaw/.htaccess docs/log4j/docs/webstart/chainsaw/.htaccess</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1146</link>
    <description>Author: carnold
Date: Mon May 26 21:29:41 2008
New Revision: 660371

URL: http://svn.apache.org/viewvc?rev=660371&amp;view=rev
Log:
Retry .htaccess for chainsaw webstart with better EOLs

Modified:
    logging/site/trunk/author/src/site/resources/log4j/docs/webstart/chainsaw/.htaccess
    logging/site/trunk/docs/log4j/docs/webstart/chainsaw/.htaccess

Modified: logging/site/trunk/author/src/site/resources/log4j/docs/webstart/chainsaw/.htaccess
URL: http://svn.apache.org/viewvc/logging/site/trunk/author/src/site/resources/log4j/docs/webstart/chainsaw/.htaccess?rev=660371&amp;r1=660370&amp;r2=660371&amp;view=diff
==============================================================================
--- logging/site/trunk/author/src/site/resources/log4j/docs/webstart/chainsaw/.htaccess (original)
+++ logging/site/trunk/author/src/site/resources/log4j/docs/webstart/chainsaw/.htaccess Mon May 26 21:29:41 2008
&lt; at &gt;&lt; at &gt; -1 +1,16 &lt; at &gt;&lt; at &gt;
-# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
#  Specify mime type for webStart file
#
AddType application/x-java-jnlp-file .jnlp

\ No newline at end of file
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+AddType application/x-java-jnlp-file .jnlp
+

Modified: logging/site/trunk/docs/log4j/docs/webstart/chainsaw/.htaccess
URL: http://svn.apache.org/viewvc/logging/site/trunk/docs/log4j/docs/webstart/chainsaw/.htaccess?rev=660371&amp;r1=660370&amp;r2=660371&amp;view=diff
==============================================================================
--- logging/site/trunk/docs/log4j/docs/webstart/chainsaw/.htaccess (original)
+++ logging/site/trunk/docs/log4j/docs/webstart/chainsaw/.htaccess Mon May 26 21:29:41 2008
&lt; at &gt;&lt; at &gt; -1 +1,16 &lt; at &gt;&lt; at &gt;
-# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
#  Specify mime type for webStart file
#
AddType application/x-java-jnlp-file .jnlp

\ No newline at end of file
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+AddType application/x-java-jnlp-file .jnlp
+



</description>
    <dc:creator>carnold&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-05-27T04:29:48</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1145">
    <title>svn commit: r660093 - in /logging/site/trunk: author/src/site/resources/log4j/docs/webstart/chainsaw/.htaccess docs/log4j/docs/webstart/chainsaw/.htaccess</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1145</link>
    <description>Author: carnold
Date: Sun May 25 19:59:04 2008
New Revision: 660093

URL: http://svn.apache.org/viewvc?rev=660093&amp;view=rev
Log:
Restore MIME type for Chainsaw wegstart

Added:
    logging/site/trunk/author/src/site/resources/log4j/docs/webstart/chainsaw/.htaccess
    logging/site/trunk/docs/log4j/docs/webstart/chainsaw/.htaccess

Added: logging/site/trunk/author/src/site/resources/log4j/docs/webstart/chainsaw/.htaccess
URL: http://svn.apache.org/viewvc/logging/site/trunk/author/src/site/resources/log4j/docs/webstart/chainsaw/.htaccess?rev=660093&amp;view=auto
==============================================================================
--- logging/site/trunk/author/src/site/resources/log4j/docs/webstart/chainsaw/.htaccess (added)
+++ logging/site/trunk/author/src/site/resources/log4j/docs/webstart/chainsaw/.htaccess Sun May 25 19:59:04 2008
&lt; at &gt;&lt; at &gt; -0,0 +1 &lt; at &gt;&lt; at &gt;
+# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
#  Specify mime type for webStart file
#
AddType application/x-java-jnlp-file .jnlp

\ No newline at end of file

Added: logging/site/trunk/docs/log4j/docs/webstart/chainsaw/.htaccess
URL: http://svn.apache.org/viewvc/logging/site/trunk/docs/log4j/docs/webstart/chainsaw/.htaccess?rev=660093&amp;view=auto
==============================================================================
--- logging/site/trunk/docs/log4j/docs/webstart/chainsaw/.htaccess (added)
+++ logging/site/trunk/docs/log4j/docs/webstart/chainsaw/.htaccess Sun May 25 19:59:04 2008
&lt; at &gt;&lt; at &gt; -0,0 +1 &lt; at &gt;&lt; at &gt;
+# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
#  Specify mime type for webStart file
#
AddType application/x-java-jnlp-file .jnlp

\ No newline at end of file



</description>
    <dc:creator>carnold&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-05-26T02:59:04</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1144">
    <title>Re: Timezone information in Log4j logs</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1144</link>
    <description>
On May 6, 2008, at 12:44 PM, Das, Amar wrote:


log4j usage questions should be asked on log4j-user&lt; at &gt;logging.apache.org.

The enhanced pattern layout in the extras companions supports time  
zone specifiers on date formats.  To use:

Download the extras companion from http://logging.apache.org/log4j/companions/extras 
  and place jar on classpath.



The contents of the second brace pair is passed to  
java.util.TimeZone.getTimeZone() to get the appropriate time zone.   
There is a guaranteed set of time zone identifiers and then a lot that  
are platform or implementation specific.  If you use "America/ 
New_York", your configuration file may not work properly if you change  
platforms or implementations.  See the documentation of  
java.util.TimeZone.getTimeZone() for more specifics.



</description>
    <dc:creator>Curt Arnold</dc:creator>
    <dc:date>2008-05-06T18:47:29</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1143">
    <title>Timezone information in Log4j logs</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1143</link>
    <description>Hi:

I have a program running on a server in Dallas. I need to generate log4j
output in timezone "America/New_York". How can I do that?


Current configuration is

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

Thanks

</description>
    <dc:creator>Das, Amar</dc:creator>
    <dc:date>2008-05-06T17:44:34</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1142">
    <title>Re: cvs.apache.org offline? users can't download incubating-log4net-1.2.10.zip</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1142</link>
    <description>
On Apr 30, 2008, at 8:48 PM, Ron Grabowski wrote:


You should be able to download log4net 1.2.10 from http://archive.apache.org/dist/incubator/log4net/1.2.10/incubating-log4net-1.2.10.zip 
.  I've updated src/site/apt/download.apt and manually tweaked the  
previously generated download.html on the site SVN and updated the  
live site from SVN.  Hopefully, the served pages should change shortly.

It looks like log4net 1.2.10 was at one time at http://www.apache.org/incubator/log4net/1.2.10/incubating-log4net-1.2.10.zip 
  (archive.apache.org/dist mirrors www.apache.org/dist) but may have  
been pulled since log4net is no longer in the incubator.  See http://incubator.apache.org/incubation/Incubation_Policy.html#Releases

The best solution would be to release a log4net 1.2.11.  However, if  
that is not possible, we could likely get 1.2.10 back into the main  
distribution site and update the download page to use closer.cgi.   
However, I'd want to run that by infrastructure to make sure that  
restoring a deleted binary won't cause havoc on the archive site.


</description>
    <dc:creator>Curt Arnold</dc:creator>
    <dc:date>2008-05-01T05:56:56</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1141">
    <title>svn commit: r652430 - /logging/site/trunk/docs/log4net/download.html</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1141</link>
    <description>Author: carnold
Date: Wed Apr 30 22:31:28 2008
New Revision: 652430

URL: http://svn.apache.org/viewvc?rev=652430&amp;view=rev
Log:
LOG4NET-150: Cannot download log4net 1.2.10 from site

Modified:
    logging/site/trunk/docs/log4net/download.html

Modified: logging/site/trunk/docs/log4net/download.html
URL: http://svn.apache.org/viewvc/logging/site/trunk/docs/log4net/download.html?rev=652430&amp;r1=652429&amp;r2=652430&amp;view=diff
==============================================================================
--- logging/site/trunk/docs/log4net/download.html (original)
+++ logging/site/trunk/docs/log4net/download.html Wed Apr 30 22:31:28 2008
&lt; at &gt;&lt; at &gt; -40,7 +40,7 &lt; at &gt;&lt; at &gt;
   
   
             &lt;div class="xleft"&gt;
-        Last Published: 08/30/2007
+        Last Published: 05/01/2008
                           |   
           &lt;a href="http://www.apache.org/"&gt;Apache&lt;/a&gt;
               &amp;gt;
&lt; at &gt;&lt; at &gt; -207,7 +207,7 &lt; at &gt;&lt; at &gt;
     &lt;/div&gt;
     &lt;div id="bodyColumn"&gt;
       &lt;div id="contentBox"&gt;
-        &lt;div class="section"&gt;&lt;h2&gt;Download Apache log4net 1.2.10&lt;/h2&gt;&lt;p&gt;log4net 1.2.10 is distributed under the &lt;a href="http://www.apache.org/licenses/LICENSE-2.0.html"&gt; Apache License, version 2.0&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;log4net has graduated from the Incubator project, however at the time the following releases were made, log4net was still undergoing incubation, therefore these releases are not officially endorsed by the ASF. Future releases of log4net will be officially endorsed by the ASF.&lt;/p&gt;&lt;p&gt;The link in the Mirrors column should display a list of available mirrors with a default selection based on your inferred location. If you do not see that page, try a different browser. The checksum and signature are links to the originals on the main distribution server.&lt;/p&gt;&lt;table class="bodyTable"&gt;&lt;tbody
 &gt;&lt;tr class="a"&gt;&lt;td align="left"&gt;&lt;/td&gt;&lt;td align="left"&gt;Mirrors&lt;/td&gt;&lt;td align="left"&gt;Checksum&lt;/td&gt;&lt;td align="left"&gt;Signature&lt;/td&gt;&lt;/tr&gt;&lt;tr class="b"&gt;&lt;td align="left"&gt;log4net 1.2.10 (zip)&lt;br /&gt;l
 og4net 1.2.9-beta (zip)&lt;/td&gt;&lt;td align="left"&gt;&lt;a href="http://cvs.apache.org/dist/incubator/log4net/1.2.10/incubating-log4net-1.2.10.zip"&gt; incubating-log4net-1.2.10.zip&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cvs.apache.org/dist/incubator/log4net/1.2.9/incubating-log4net-1.2.9-beta.zip"&gt; incubating-log4net-1.2.9-beta.zip&lt;/a&gt;&lt;/td&gt;&lt;td align="left"&gt;&lt;a href="http://cvs.apache.org/dist/incubator/log4net/1.2.10/incubating-log4net-1.2.10.zip.md5"&gt; incubating-log4net-1.2.10.zip.md5&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cvs.apache.org/dist/incubator/log4net/1.2.9/incubating-log4net-1.2.9-beta.zip.md5"&gt; incubating-log4net-1.2.9-beta.zip.md5&lt;/a&gt;&lt;/td&gt;&lt;td align="left"&gt;&lt;a href="http://cvs.apache.org/dist/incubator/log4net/1.2.10/incubating-log4net-1.2.10.zip.asc"&gt; incubating-log4net-1.2.10.zip.asc&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cvs.apac
 he.org/dist/incubator/log4net/1.2.9/incubating-log4net-1.2.9-beta.zip.asc"&gt; incubating-log4net-1.2.9-beta.zip.asc&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Please read &lt;a href="http://httpd.apache.org
 /dev/verification.html"&gt;Verifying Apache HTTP Server Releases&lt;/a&gt; for more information on why you should verify our releases.&lt;/p&gt;&lt;div class="section"&gt;&lt;h3&gt;Previous Releases&lt;/h3&gt;&lt;p&gt;Previous releases of log4net are available from the &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=31983&amp;release_id=171808"&gt;SourceForge Project Site&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
+        &lt;div class="section"&gt;&lt;h2&gt;Download Apache log4net 1.2.10&lt;/h2&gt;&lt;p&gt;log4net 1.2.10 is distributed under the &lt;a href="http://www.apache.org/licenses/LICENSE-2.0.html"&gt; Apache License, version 2.0&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;log4net has graduated from the Incubator project, however at the time the following releases were made, log4net was still undergoing incubation, therefore these releases are not officially endorsed by the ASF. Future releases of log4net will be officially endorsed by the ASF.&lt;/p&gt;&lt;p&gt;The link in the Mirrors column should display a list of available mirrors with a default selection based on your inferred location. If you do not see that page, try a different browser. The checksum and signature are links to the originals on the main distribution server.&lt;/p&gt;&lt;table class="bodyTable"&gt;&lt;tbody
 &gt;&lt;tr class="a"&gt;&lt;td align="left"&gt;&lt;/td&gt;&lt;td align="left"&gt;Mirrors&lt;/td&gt;&lt;td align="left"&gt;Checksum&lt;/td&gt;&lt;td align="left"&gt;Signature&lt;/td&gt;&lt;/tr&gt;&lt;tr class="b"&gt;&lt;td align="left"&gt;log4net 1.2.10 (zip)&lt;br /&gt;l
 og4net 1.2.9-beta (zip)&lt;/td&gt;&lt;td align="left"&gt;&lt;a href="http://archive.apache.org/dist/incubator/log4net/1.2.10/incubating-log4net-1.2.10.zip"&gt; incubating-log4net-1.2.10.zip&lt;/a&gt;&lt;br /&gt;&lt;a href="http://archive.apache.org/dist/incubator/log4net/1.2.9/incubating-log4net-1.2.9-beta.zip"&gt; incubating-log4net-1.2.9-beta.zip&lt;/a&gt;&lt;/td&gt;&lt;td align="left"&gt;&lt;a href="http://archive.apache.org/dist/incubator/log4net/1.2.10/incubating-log4net-1.2.10.zip.md5"&gt; incubating-log4net-1.2.10.zip.md5&lt;/a&gt;&lt;br /&gt;&lt;a href="http://archive.apache.org/dist/incubator/log4net/1.2.9/incubating-log4net-1.2.9-beta.zip.md5"&gt; incubating-log4net-1.2.9-beta.zip.md5&lt;/a&gt;&lt;/td&gt;&lt;td align="left"&gt;&lt;a href="http://archive.apache.org/dist/incubator/log4net/1.2.10/incubating-log4net-1.2.10.zip.asc"&gt; incubating-log4net-1.2.10.zip.asc&lt;/a&gt;&lt;br /&gt;&lt;a h
 ref="http://archive.apache.org/dist/incubator/log4net/1.2.9/incubating-log4net-1.2.9-beta.zip.asc"&gt; incubating-log4net-1.2.9-beta.zip.asc&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Please read &lt;a href=
 "http://httpd.apache.org/dev/verification.html"&gt;Verifying Apache HTTP Server Releases&lt;/a&gt; for more information on why you should verify our releases.&lt;/p&gt;&lt;div class="section"&gt;&lt;h3&gt;Previous Releases&lt;/h3&gt;&lt;p&gt;Previous releases of log4net are available from the &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=31983&amp;release_id=171808"&gt;SourceForge Project Site&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
       &lt;/div&gt;
     &lt;/div&gt;
     &lt;div class="clear"&gt;
&lt; at &gt;&lt; at &gt; -215,7 +215,7 &lt; at &gt;&lt; at &gt;
     &lt;/div&gt;
     &lt;div id="footer"&gt;
       &lt;div class="xright"&gt;&amp;#169;  
-          2007
+          2008
     
           Apache Software Foundation
           



</description>
    <dc:creator>carnold&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-05-01T05:31:28</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.apache.logging/1140">
    <title>cvs.apache.org offline? users can't download incubating-log4net-1.2.10.zip</title>
    <link>http://permalink.gmane.org/gmane.comp.apache.logging/1140</link>
    <description>I know that svn.apache.org has been having some issues the past few days. Users are posting to the log4net list that they can't download the latest version of log4net from this link (its been the same link for a couple years):

 http://cvs.apache.org/dist/incubator/log4net/1.2.10/incubating-log4net-1.2.10.zip

Is that the correct place for it? log4cxx is hosted at http://www.apache.org/dyn/closer.cgi/logging/... How can I upload incubating-log4net-1.2.10.zip there?

Thanks,
Ron

</description>
    <dc:creator>Ron Grabowski</dc:creator>
    <dc:date>2008-05-01T01:48:28</dc:date>
  </item>
  <textinput about="http://search.gmane.org/?group=$group=gmane.comp.apache.logging">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.apache.logging</link>
  </textinput>
</rdf:RDF>
