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]