You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by sd...@apache.org on 2004/01/03 09:04:13 UTC

cvs commit: logging-log4j/src/java/org/apache/log4j/chainsaw LogUI.java ChainsawAppender.java MyTableModel.java EventDetails.java EventDetailSink.java

sdeboy      2004/01/03 00:04:12

  Modified:    src/java/org/apache/log4j/chainsaw LogUI.java
                        ChainsawAppender.java
  Removed:     src/java/org/apache/log4j/chainsaw MyTableModel.java
                        EventDetails.java EventDetailSink.java
  Log:
  - removed unused classes
  - removed tablemodel-related code in chainsawappender
  - fixed chainsaw v2's ability to be started via chainsawappender (in-vm)
  
  Revision  Changes    Path
  1.71      +20 -9     logging-log4j/src/java/org/apache/log4j/chainsaw/LogUI.java
  
  Index: LogUI.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/LogUI.java,v
  retrieving revision 1.70
  retrieving revision 1.71
  diff -u -r1.70 -r1.71
  --- LogUI.java	2 Jan 2004 21:51:58 -0000	1.70
  +++ LogUI.java	3 Jan 2004 08:04:12 -0000	1.71
  @@ -176,7 +176,7 @@
     private ReceiversPanel receiversPanel;
     private ChainsawTabbedPane tabbedPane;
     private JToolBar toolbar;
  -  private final ChainsawStatusBar statusBar = new ChainsawStatusBar();
  +  private ChainsawStatusBar statusBar;
     private final ApplicationPreferenceModel applicationPreferenceModel = new ApplicationPreferenceModel();
     private final ApplicationPreferenceModelPanel applicationPreferenceModelPanel = new ApplicationPreferenceModelPanel(applicationPreferenceModel);
     private final Map tableModelMap = new HashMap();
  @@ -309,15 +309,25 @@
     }
   
     /**
  -   * DOCUMENT ME!
  -   *
  +   * Allow Chainsaw v2 to be ran in-process (configured as a ChainsawAppender)
  +   * NOTE: Closing Chainsaw will NOT stop the application generating the events.
      * @param appender
  -   *                    DOCUMENT ME!
  +   *
      */
     public void activateViewer(ChainsawAppender appender) {
  -    handler = new ChainsawAppenderHandler(appender);
  -    handler.addEventBatchListener(new NewTabEventBatchReceiver());
  -    activateViewer();
  +      ApplicationPreferenceModel model = new ApplicationPreferenceModel();
  +      SettingsManager.getInstance().configure(model);
  +      applyLookAndFeel(model.getLookAndFeelClassName());
  +    
  +      handler = new ChainsawAppenderHandler(appender);
  +      handler.addEventBatchListener(new NewTabEventBatchReceiver());
  +      LogManager.getRootLogger().addAppender(handler);
  +      setShutdownAction(new AbstractAction() {
  +		public void actionPerformed(ActionEvent e) {
  +		}});
  +      activateViewer();
  +
  +      getApplicationPreferenceModel().apply(model);
     }
   
     /**
  @@ -327,7 +337,7 @@
      */
     private void initGUI() {
       setupHelpSystem();
  -    
  +    statusBar = new ChainsawStatusBar();    
       setupReceiverPanel();
       
       setToolBarAndMenus(new ChainsawToolBarAndMenus(this));
  @@ -1242,7 +1252,7 @@
         }
       }
       
  -    JWindow progressWindow = new JWindow();
  +    final JWindow progressWindow = new JWindow();
       final ProgressPanel panel = new ProgressPanel(1, 3, "Shutting down");
       progressWindow.getContentPane().add(panel);
       progressWindow.pack();
  @@ -1277,6 +1287,7 @@
   
             fireShutdownEvent();
             performShutdownAction();
  +          progressWindow.setVisible(false);
           }
         };
   
  
  
  
  1.8       +34 -137   logging-log4j/src/java/org/apache/log4j/chainsaw/ChainsawAppender.java
  
  Index: ChainsawAppender.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/ChainsawAppender.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ChainsawAppender.java	25 Jun 2003 04:05:22 -0000	1.7
  +++ ChainsawAppender.java	3 Jan 2004 08:04:12 -0000	1.8
  @@ -48,14 +48,15 @@
    */
   package org.apache.log4j.chainsaw;
   
  +import java.net.InetAddress;
  +import java.net.UnknownHostException;
   import java.util.ArrayList;
  -import javax.swing.event.TableModelListener;
  -import javax.swing.table.TableModel;
   
   import org.apache.log4j.Appender;
   import org.apache.log4j.AppenderSkeleton;
  -import org.apache.log4j.spi.LoggingEvent;
  +import org.apache.log4j.helpers.Constants;
   import org.apache.log4j.helpers.OptionConverter;
  +import org.apache.log4j.spi.LoggingEvent;
   
   
   /**
  @@ -66,24 +67,11 @@
    * @version 1.0
    */
   public class ChainsawAppender
  -    extends AppenderSkeleton
  -    implements EventDetailSink, TableModel {
  +    extends AppenderSkeleton{
   
     private final ArrayList appenders=new ArrayList();
     
     /**
  -   * Shared model used by the shared Appender
  -   */
  -  private static MyTableModel sSharedModel;
  -
  -  /**
  -   * The model that is used by this Appender, we ensure
  -   * here that we only use a single Model as the current
  -   * release is effetively an in-JVM singleton
  -   */
  -  private final MyTableModel wrappedTableModel = getDefaultModel();
  -
  -  /**
      * The in-JVM singleton instance of the ChainsawAppender.
      *
      * If somehow Log4j initialises more than one, then the first one to
  @@ -95,6 +83,8 @@
      * The classname of the viewer to create to view the events.
      */
     private String viewerClassname;
  +  private String hostname = "localhost";
  +  private String application = "app";
   
     /**
      * Constructor, initialises the singleton instance of the appender
  @@ -108,21 +98,6 @@
     }
   
     /**
  -   * Returns the singleton MyTableModel instance that has been configured.
  -   *
  -   * This will be eventually replaced to allow each ChainsawAppender
  -   * to have it's own model, but for now it's important that all log events
  -   * received inside Chainsaw go to a single model.
  -   * @return MyTableModel
  -   */
  -  private static synchronized MyTableModel getDefaultModel() {
  -    if (sSharedModel == null) {
  -      sSharedModel = new MyTableModel();
  -    }
  -    return sSharedModel;
  -  }
  -
  -  /**
      * Return the singleton instance of the ChainsawAppender, it should only
      * be initialised once.
      * @return the One and only instance of the ChainsawAppender that is
  @@ -133,18 +108,6 @@
     }
   
     /**
  -   * Returns the internally wrapped Model
  -   *
  -   * NOTE: it is strongly recommended at this time not to rely on this method
  -   * until further refactoring is completed.
  -   * @return MyTableModel the MyTableModel that can be used by external
  -   * components
  -   */
  -  MyTableModel getWrappedModel() {
  -    return wrappedTableModel;
  -  }
  -
  -  /**
      * This appender does not require layout and so return false
      * @return false and only false
      */
  @@ -157,28 +120,22 @@
     }
     
     /**
  -   * Implements the EventDetailSink interface by forwarding the EventDetails
  -   * object onto an internal Model
  -   * @param aDetails the EventDetails to add to the model
  -   */
  -  public void addEvent(EventDetails aDetails) {
  -    synchronized (wrappedTableModel) {
  -      wrappedTableModel.addEvent(aDetails);
  -    }
  -  }
  -
  -  /**
      * Appends the event into the internal wrapped TableModel
      * @param aEvent the LoggingEvent to append
      */
     protected void append(LoggingEvent aEvent) {
  -    synchronized (wrappedTableModel) {
  -      wrappedTableModel.addEvent(new EventDetails(aEvent));
  -    }
  -        for (int i=0;i<appenders.size();i++) {
  -            Appender appender=(Appender)appenders.get(i);
  -            appender.doAppend(aEvent);
  -        }
  +      if (hostname != null) {
  +        aEvent.setProperty(Constants.HOSTNAME_KEY, hostname);
  +      }
  +
  +      if (application != null) {
  +        aEvent.setProperty(Constants.APPLICATION_KEY, application);
  +      }
  +
  +      for (int i=0;i<appenders.size();i++) {
  +        Appender appender=(Appender)appenders.get(i);
  +        appender.doAppend(aEvent);
  +      }
     }
   
     /**
  @@ -197,6 +154,14 @@
       if (viewer != null) {
         viewer.activateViewer(this);
       }
  +    try {
  +      hostname = InetAddress.getLocalHost().getHostName();
  +    } catch (UnknownHostException uhe) {
  +      try {
  +        hostname = InetAddress.getLocalHost().getHostAddress();
  +      } catch (UnknownHostException uhe2) {
  +      }
  +    }
     }
   
     /**
  @@ -225,88 +190,20 @@
       return viewerClassname;
     }
   
  -  // ==========================================================================
  -  // All methods here are from TableModel, and simply forward on to the
  -  // internal wrappedTableModel instance
  -  // ==========================================================================
  -
  -  /**
  -   * Implementation of TableModel interface
  -   * @return int rowCount
  -   */
  -  public int getRowCount() {
  -    return wrappedTableModel.getRowCount();
  -  }
  -
  -  /**
  -   * Implementation of TableModel interface
  -   * @return int column Count
  -   */
  -  public int getColumnCount() {
  -    return wrappedTableModel.getColumnCount();
  -  }
  -
  -  /**
  -   * Implementation of TableModel interface
  -   * @param aColumnIndex the Column index to query the name for
  -   * @return String column name
  -   */
  -  public String getColumnName(int aColumnIndex) {
  -    return wrappedTableModel.getColumnName(aColumnIndex);
  -  }
  -
     /**
  -   * Implementation of TableModel interface
  -   * @param columnIndex column Index to query the Class of
  -   * @return Class class of Column
  +   * The <b>Application</b> option takes a string value which should be the
  +   * name of the application getting logged
      */
  -  public Class getColumnClass(int columnIndex) {
  -    return wrappedTableModel.getColumnClass(columnIndex);
  +  public void setApplication(String lapp) {
  +    this.application = lapp;
     }
   
     /**
  -   * Implementation of TableModel interface
  -   * @param rowIndex row Index to query
  -   * @param columnIndex column Index to query
  -   * @return boolean is Cell Editable?
  +   *  Returns value of the <b>Application</b> option.
      */
  -  public boolean isCellEditable(int rowIndex, int columnIndex) {
  -    return wrappedTableModel.isCellEditable(rowIndex, columnIndex);
  +  public String getApplication() {
  +    return application;
     }
   
  -  /**
  -   * Implementation of TableModel interface
  -   * @param rowIndex the row index to retrieve value from
  -   * @param columnIndex to the column index to retrieve value from
  -   * @return Object value at a particular row/column point
  -   */
  -  public Object getValueAt(int rowIndex, int columnIndex) {
  -    return wrappedTableModel.getValueAt(rowIndex, columnIndex);
  -  }
  -
  -  /**
  -   * Implementation of TableModel interface
  -   * @param aValue the value to set
  -   * @param rowIndex the row
  -   * @param columnIndex the column
  -   */
  -  public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
  -    wrappedTableModel.setValueAt(aValue, rowIndex, columnIndex);
  -  }
   
  -  /**
  -   * Implementation of TableModel interface
  -   * @param l a TableModelListener to add
  -   */
  -  public void addTableModelListener(TableModelListener l) {
  -    wrappedTableModel.addTableModelListener(l);
  -  }
  -
  -  /**
  -   * Implementation of TableModel interface
  -   * @param l listener to remove from the currently registered listeners
  -   */
  -  public void removeTableModelListener(TableModelListener l) {
  -    wrappedTableModel.removeTableModelListener(l);
  -  }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org