sdeboy 2003/12/10 21:45:59 Modified: src/java/org/apache/log4j/chainsaw LogUI.java ChainsawAppenderHandler.java ApplicationPreferenceModel.java LoggingEventFieldResolver.java src/java/org/apache/log4j/chainsaw/prefs default.properties Log: added 'identifierExpression' support for tab routing to accept any set of space-delimited text or fields supported by LoggingEventFieldResolver. You currently need to change chainsaw.settings.properties in your .chainsaw directory (not while it's running) if you want to change the value, but an application-wide preferences panel will be available soon. Revision Changes Path 1.48 +10 -5 jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogUI.java Index: LogUI.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogUI.java,v retrieving revision 1.47 retrieving revision 1.48 diff -u -r1.47 -r1.48 --- LogUI.java 11 Dec 2003 02:59:01 -0000 1.47 +++ LogUI.java 11 Dec 2003 05:45:59 -0000 1.48 @@ -121,8 +121,6 @@ import org.apache.log4j.plugins.PluginListener; import org.apache.log4j.plugins.PluginRegistry; import org.apache.log4j.plugins.Receiver; -import org.omg.CORBA.portable.ApplicationException; - /** * The main entry point for Chainsaw, this class represents the first frame @@ -341,7 +339,7 @@ setSize( event.asInt(LogUI.MAIN_WINDOW_WIDTH), event.asInt(LogUI.MAIN_WINDOW_HEIGHT)); - + getToolBarAndMenus().stateChange(); } @@ -377,7 +375,13 @@ */ public void activateViewer() { welcomePanel = new WelcomePanel(this); - + + appPreferenceModel.addPropertyChangeListener("identifierExpression", new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent evt) { + handler.setIdentifierExpression(evt.getNewValue().toString()); + } + } ); + final SocketNodeEventListener socketListener = new SocketNodeEventListener() { public void socketOpened(String remoteInfo) { @@ -744,7 +748,8 @@ if (noReceiversDefined && appPreferenceModel.isShowNoReceiverWarning()) { showNoReceiversWarningPanel(); } - + + Container container = tutorialFrame.getContentPane(); final JEditorPane tutorialArea = new JEditorPane(); tutorialArea.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5)); 1.10 +23 -57 jakarta-log4j/src/java/org/apache/log4j/chainsaw/ChainsawAppenderHandler.java Index: ChainsawAppenderHandler.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/ChainsawAppenderHandler.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- ChainsawAppenderHandler.java 10 Dec 2003 21:35:06 -0000 1.9 +++ ChainsawAppenderHandler.java 11 Dec 2003 05:45:59 -0000 1.10 @@ -49,17 +49,8 @@ package org.apache.log4j.chainsaw; -import org.apache.log4j.AppenderSkeleton; -import org.apache.log4j.LogManager; -import org.apache.log4j.helpers.Constants; -import org.apache.log4j.helpers.LogLog; -import org.apache.log4j.net.SocketReceiver; -import org.apache.log4j.plugins.PluginRegistry; -import org.apache.log4j.spi.LoggingEvent; - import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; - import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; @@ -68,6 +59,13 @@ import javax.swing.event.EventListenerList; +import org.apache.log4j.AppenderSkeleton; +import org.apache.log4j.LogManager; +import org.apache.log4j.helpers.LogLog; +import org.apache.log4j.net.SocketReceiver; +import org.apache.log4j.plugins.PluginRegistry; +import org.apache.log4j.spi.LoggingEvent; + /** * A handler class that either extends a particular appender hierarchy or can be bound @@ -85,6 +83,9 @@ private int sleepInterval = 1000; private EventListenerList listenerList = new EventListenerList(); private double dataRate = 0.0; + private String identifierExpression = "UNKNOWN"; + private final LoggingEventFieldResolver resolver = LoggingEventFieldResolver.getInstance(); + private PropertyChangeSupport propertySupport = new PropertyChangeSupport(this); @@ -93,7 +94,15 @@ appender.addAppender(this); activateOptions(); } - + + public void setIdentifierExpression(String identifierExpression) { + this.identifierExpression = identifierExpression; + } + + public String getIdentifierExpression() { + return identifierExpression; + } + public ChainsawAppenderHandler() { activateOptions(); } @@ -142,54 +151,11 @@ /** * Determines an appropriate title for the Tab for the Tab Pane * by locating a the hostname property - * @param v - * @return + * @param event + * @return identifier */ - private static String getTabIdentifier(LoggingEvent e) { - StringBuffer ident = new StringBuffer(); - String hostname = e.getProperty(Constants.HOSTNAME_KEY); - - if (hostname != null) { - ident.append(hostname); - } - - String appname = e.getProperty(Constants.APPLICATION_KEY); - - if (appname != null) { - if (ident.length() > 0) { - ident.append("-"); - } - - ident.append(appname); - } - - if (ident.length() == 0) { - /** - * Maybe there's a Remote Host entry? - */ - String remoteHost = - e.getProperty(ChainsawConstants.LOG4J_REMOTEHOST_KEY); - - if (remoteHost != null) { - int colonIndex = remoteHost.indexOf(":"); - - if (colonIndex == -1) { - colonIndex = remoteHost.length(); - } - - remoteHost = remoteHost.substring(0, colonIndex); - } - - if (remoteHost != null) { - ident.append(remoteHost); - } - } - - if (ident.length() == 0) { - ident.append(ChainsawConstants.UNKNOWN_TAB_NAME); - } - - return ident.toString(); + private String getTabIdentifier(LoggingEvent e) { + return resolver.applyFields(identifierExpression, e); } /** 1.2 +23 -14 jakarta-log4j/src/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java Index: ApplicationPreferenceModel.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ApplicationPreferenceModel.java 11 Dec 2003 02:56:35 -0000 1.1 +++ ApplicationPreferenceModel.java 11 Dec 2003 05:45:59 -0000 1.2 @@ -48,14 +48,15 @@ */ package org.apache.log4j.chainsaw; -import org.apache.log4j.chainsaw.prefs.LoadSettingsEvent; -import org.apache.log4j.chainsaw.prefs.SaveSettingsEvent; -import org.apache.log4j.chainsaw.prefs.SettingsListener; - import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; +import org.apache.log4j.chainsaw.prefs.LoadSettingsEvent; +import org.apache.log4j.chainsaw.prefs.SaveSettingsEvent; +import org.apache.log4j.chainsaw.prefs.SettingsListener; +import org.apache.log4j.helpers.Constants; + /** * Encapsulates the Chainsaw Application wide properties @@ -66,6 +67,7 @@ class ApplicationPreferenceModel implements SettingsListener { private boolean showNoReceiverWarning = true; + private String identifierExpression = Constants.HOSTNAME_KEY + " - " + Constants.APPLICATION_KEY; private final PropertyChangeSupport propertySupport = new PropertyChangeSupport(this); @@ -137,7 +139,6 @@ */ public PropertyChangeListener[] getPropertyChangeListeners( String propertyName) { - return propertySupport.getPropertyChangeListeners(propertyName); } @@ -146,7 +147,6 @@ * @return */ public boolean hasListeners(String propertyName) { - return propertySupport.hasListeners(propertyName); } @@ -164,23 +164,32 @@ return showNoReceiverWarning; } + + public final String getIdentifierExpression() { + return identifierExpression; + } + public final void setIdentifierExpression(String newIdentifierExpression) { + String oldIdentifierExpression=identifierExpression; + this.identifierExpression = newIdentifierExpression; + firePropertyChange("identifierExpression", oldIdentifierExpression, newIdentifierExpression); + } + /** * @param showNoReceiverWarning The showNoReceiverWarning to set. */ - public final void setShowNoReceiverWarning(boolean showNoReceiverWarning) { - this.showNoReceiverWarning = showNoReceiverWarning; + public final void setShowNoReceiverWarning(boolean newShowNoReceiverWarning) { + boolean oldShowNoReceiverWarning=showNoReceiverWarning; + this.showNoReceiverWarning = newShowNoReceiverWarning; + firePropertyChange("showNoReceiverWarning", oldShowNoReceiverWarning, newShowNoReceiverWarning); } /* (non-Javadoc) * @see org.apache.log4j.chainsaw.prefs.SettingsListener#loadSettings(org.apache.log4j.chainsaw.prefs.LoadSettingsEvent) */ public void loadSettings(LoadSettingsEvent event) { - - if (event.getSetting("showNoReceiverWarning") != null) { - setShowNoReceiverWarning(event.asBoolean("showNoReceiverWarning")); - } - + setShowNoReceiverWarning(event.asBoolean("showNoReceiverWarning")); + setIdentifierExpression(event.getSetting("identifierExpression")); } /* (non-Javadoc) @@ -188,6 +197,6 @@ */ public void saveSettings(SaveSettingsEvent event) { event.saveSetting("showNoReceiverWarning", isShowNoReceiverWarning()); - + event.saveSetting("identifierExpression", getIdentifierExpression()); } } 1.14 +22 -3 jakarta-log4j/src/java/org/apache/log4j/chainsaw/LoggingEventFieldResolver.java Index: LoggingEventFieldResolver.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LoggingEventFieldResolver.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- LoggingEventFieldResolver.java 8 Dec 2003 06:00:21 -0000 1.13 +++ LoggingEventFieldResolver.java 11 Dec 2003 05:45:59 -0000 1.14 @@ -49,11 +49,12 @@ package org.apache.log4j.chainsaw; -import org.apache.log4j.spi.LocationInfo; -import org.apache.log4j.spi.LoggingEvent; - import java.util.ArrayList; import java.util.List; +import java.util.StringTokenizer; + +import org.apache.log4j.spi.LocationInfo; +import org.apache.log4j.spi.LoggingEvent; /** @@ -128,6 +129,24 @@ keywordList.add(THREAD_FIELD); keywordList.add(MDC_FIELD); keywordList.add(PROP_FIELD); + } + + public String applyFields(String replaceText, LoggingEvent event) { + StringTokenizer tokenizer = new StringTokenizer(replaceText); + StringBuffer result = new StringBuffer(); + + while (tokenizer.hasMoreTokens()) { + String token = tokenizer.nextToken(); + System.out.println("examining" + token); + if (isField(token) || (token.toUpperCase().startsWith(MDC_FIELD) || token.toUpperCase().startsWith(PROP_FIELD))) { + System.out.println("was token - value is " +getValue(token, event).toString()); + result.append(getValue(token, event).toString()); + } else { + System.out.println("Was not a token - appending " + token); + result.append(token); + } + } + return result.toString(); } public static LoggingEventFieldResolver getInstance() { 1.4 +3 -1 jakarta-log4j/src/java/org/apache/log4j/chainsaw/prefs/default.properties Index: default.properties =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/prefs/default.properties,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- default.properties 2 Oct 2003 08:27:36 -0000 1.3 +++ default.properties 11 Dec 2003 05:45:59 -0000 1.4 @@ -16,4 +16,6 @@ level.display=icons SavedConfigs.Size=0 DateFormat.1=HH:mm:ss -DateFormat.2=HH:mm \ No newline at end of file +DateFormat.2=HH:mm +showNoReceiverWarning=true +identifierExpression=PROP.hostname - PROP.application
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]