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]

Reply via email to