Full speed ahead!

You mean we may get an official release out the door with Chainsaw?  I
started it when my first child was born.  He's 4 now! (and I have 2
others)



Scott Deboy
Principal Engineer
COMOTIV SYSTEMS
111 SW Columbia Street Ste. 950
Portland, OR  97201
Office: 503.224.7496
Direct Line: 503.821.6482
Cell: 503.997.1367
Fax: 503.222.0185
[EMAIL PROTECTED]
www.comotivsystems.com


-----Original Message-----
From: Paul Smith [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, April 25, 2007 5:55 PM
To: Log4J Developers List
Subject: Re: Chainsaw & log4j 1.2 status


On 22/04/2007, at 3:21 PM, Paul Smith wrote:

>>
>> I've committed a PluginConfigurator to both the component and  
>> log4j 1.3 and copied the LoggerRepositoryExImpl over to log4j 1.3.
>>
>
> Thanks, I'll give that a crack and see what we get.


Success!

With the below diff, I am able to use the same configuration file  
we'd been using internally to attach to our QA box via  
SocketHubAppender/Receiver.  This is using the latest 1.2.15 +  
component+receiver+expression-filter modules.

On top of that, I see lovely juicy MDC values appearing as new  
columns in Chainsaw.  w00t.

Scott, what else do you think we need to consider before deciding on  
whether we bind Chainsaw to log4j 1.2 permanently (if at all)?

Index: src/java/org/apache/log4j/chainsaw/LogUI.java
===================================================================
--- src/java/org/apache/log4j/chainsaw/LogUI.java       (revision  
532553)
+++ src/java/org/apache/log4j/chainsaw/LogUI.java       (working copy)
@@ -53,6 +53,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.BorderFactory;
@@ -83,10 +84,12 @@
import javax.swing.event.EventListenerList;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
+
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.Level;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
+import org.apache.log4j.LoggerRepositoryExImpl;
import org.apache.log4j.chainsaw.dnd.FileDnDTarget;
import org.apache.log4j.chainsaw.help.HelpManager;
import org.apache.log4j.chainsaw.help.Tutorial;
@@ -104,7 +107,6 @@
import org.apache.log4j.chainsaw.receivers.ReceiversPanel;
import org.apache.log4j.chainsaw.version.VersionManager;
import org.apache.log4j.helpers.Constants;
-import org.apache.log4j.joran.JoranConfigurator;
import org.apache.log4j.net.SocketNodeEventListener;
import org.apache.log4j.plugins.Plugin;
import org.apache.log4j.plugins.PluginEvent;
@@ -114,9 +116,12 @@
import org.apache.log4j.rule.ExpressionRule;
import org.apache.log4j.rule.Rule;
import org.apache.log4j.spi.Decoder;
-import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.LoggerRepository;
import org.apache.log4j.spi.LoggerRepositoryEx;
+import org.apache.log4j.spi.LoggingEvent;
+import org.apache.log4j.spi.RepositorySelector;
+import org.apache.log4j.xml.DOMConfigurator;
+import org.apache.log4j.xml.PluginConfigurator;
import org.apache.log4j.xml.XMLDecoder;
@@ -190,6 +195,10 @@
     */
    private EventListenerList shutdownListenerList = new  
EventListenerList();
    private WelcomePanel welcomePanel;
+
+  private static final Object repositorySelectorGuard = new Object();
+  private static final LoggerRepositoryExImpl repositoryExImpl = new  
LoggerRepositoryExImpl(LogManager.getLoggerRepository());
+
    private PluginRegistry pluginRegistry;
    /**
@@ -245,9 +254,19 @@
     * @param args
     */
    public static void main(String[] args) {
+
        if(OSXIntegration.IS_OSX) {
            System.setProperty("apple.laf.useScreenMenuBar", "true");
        }
+
+
+    LogManager.setRepositorySelector(new RepositorySelector() {
+
+        public LoggerRepository getLoggerRepository() {
+            return repositoryExImpl;
+        }}, repositorySelectorGuard);
+
+
      ApplicationPreferenceModel model = new  
ApplicationPreferenceModel();
      SettingsManager.getInstance().configure(new  
ApplicationPreferenceModelSaver(model));
@@ -298,6 +317,7 @@
        showSplash(logUI);
      }
      logUI.cyclicBufferSize = model.getCyclicBufferSize();
+    logUI.pluginRegistry = repositoryExImpl.getPluginRegistry();
      logUI.handler = new ChainsawAppenderHandler();
      logUI.handler.addEventBatchListener(logUI.new  
NewTabEventBatchReceiver());
@@ -1889,8 +1909,7 @@
              try {
                // we temporarily swap the TCCL so that plugins can  
find resources
                Thread.currentThread().setContextClassLoader 
(classLoader);
-              JoranConfigurator jc = new JoranConfigurator();
-              jc.doConfigure(url, LogManager.getLoggerRepository());
+              PluginConfigurator.configure(url);
              }finally{
                  // now switch it back...
                  Thread.currentThread().setContextClassLoader 
(previousTCCL);
Index: src/java/org/apache/log4j/chainsaw/layout/EventDetailLayout.java
===================================================================
--- src/java/org/apache/log4j/chainsaw/layout/ 
EventDetailLayout.java    (revision 532553)
+++ src/java/org/apache/log4j/chainsaw/layout/ 
EventDetailLayout.java    (working copy)
@@ -191,16 +191,15 @@
          li = formatLocationInfo(event);
      }
      Hashtable properties = formatProperties(event);
-    LoggingEvent copy = new LoggingEvent();
-    copy.setLogger(logger);
-    copy.setTimeStamp(event.getTimeStamp());
-    copy.setLevel(event.getLevel());
-    copy.setThreadName(threadName);
-    copy.setMessage(msg);
-    copy.setNDC(ndc);
-    copy.setThrowableInformation(event.getThrowableInformation());
-    copy.setLocationInformation(li);
-    copy.setProperties(properties);
+    LoggingEvent copy = new LoggingEvent(null,
+          logger, event.getTimeStamp(),
+          event.getLevel(),
+          msg,
+          threadName,
+          event.getThrowableInformation(),
+          ndc,
+          li,
+          properties);

      return copy;
    }
Index: src/java/org/apache/log4j/chainsaw/layout/LayoutEditorPane.java
===================================================================
--- src/java/org/apache/log4j/chainsaw/layout/ 
LayoutEditorPane.java     (revision 532553)
+++ src/java/org/apache/log4j/chainsaw/layout/ 
LayoutEditorPane.java     (working copy)
@@ -182,16 +182,16 @@
      ThrowableInformation tsr = new ThrowableInformation(new  
Exception());
-    event = new LoggingEvent();
-    event.setLogger(Logger.getLogger("com.mycompany.mylogger"));
-    event.setTimeStamp(new Date().getTime());
-    event.setLevel(org.apache.log4j.Level.DEBUG);
-    event.setThreadName("Thread-1");
-    event.setMessage("The quick brown fox jumped over the lazy dog");
-    event.setNDC("NDC string");
-    event.setThrowableInformation(tsr);
-    event.setLocationInformation(li);
-    event.setProperties(hashTable);
+    event = new LoggingEvent("org.apache.log4j.Logger",
+           Logger.getLogger("com.mycompany.mylogger"),
+               new Date().getTime(),
+               org.apache.log4j.Level.DEBUG,
+               "The quick brown fox jumped over the lazy dog",
+               "Thread-1",
+               tsr,
+               "NDC string",
+               li,
+               hashTable);

    }

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to