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]

Reply via email to