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 ps...@apache.org on 2003/09/19 09:06:40 UTC
cvs commit: jakarta-log4j/src/java/org/apache/log4j/chainsaw/help Tutorial.java
psmith 2003/09/19 00:06:40
Modified: src/java/org/apache/log4j/chainsaw
ChainsawToolBarAndMenus.java
ReceiverTreeCellRenderer.java Generator.java
Added: src/java/org/apache/log4j/chainsaw/help Tutorial.java
Log:
Started adding the Tutorial code into Chainsaw.
Now from the Help menu you can start the Tutorial. Currently
this installs a Generator fake receiver plugin into the Registry
which streams random/benign events, allowing the user
to see Chainsaw in actions.
Still WIP. Want to hook this up into the help system, add a few
more generators etc.
Revision Changes Path
1.14 +13 -1 jakarta-log4j/src/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
Index: ChainsawToolBarAndMenus.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- ChainsawToolBarAndMenus.java 13 Sep 2003 05:56:13 -0000 1.13
+++ ChainsawToolBarAndMenus.java 19 Sep 2003 07:06:40 -0000 1.14
@@ -55,6 +55,7 @@
*/
package org.apache.log4j.chainsaw;
+import org.apache.log4j.chainsaw.help.*;
import org.apache.log4j.chainsaw.icons.ChainsawIcons;
import org.apache.log4j.chainsaw.prefs.LoadSettingsEvent;
import org.apache.log4j.chainsaw.prefs.SaveSettingsEvent;
@@ -91,6 +92,7 @@
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JSlider;
@@ -667,8 +669,18 @@
}
});
- helpMenu.add(about);
+
+ Action startTutorial = new AbstractAction("Start tutorial...", new ImageIcon(ChainsawIcons.HELP)){
+ public void actionPerformed(ActionEvent e) {
+ new Thread(new Tutorial()).start();
+ }};
+
+ startTutorial.putValue(Action.SHORT_DESCRIPTION, "Starts some pretend Receivers that generate random events for use during the Tutorial");
+ helpMenu.add(startTutorial);
+ helpMenu.addSeparator();
+ helpMenu.add(about);
+
menuBar.add(fileMenu);
menuBar.add(viewMenu);
menuBar.add(activeTabMenu);
1.4 +6 -1 jakarta-log4j/src/java/org/apache/log4j/chainsaw/ReceiverTreeCellRenderer.java
Index: ReceiverTreeCellRenderer.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/ReceiverTreeCellRenderer.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ReceiverTreeCellRenderer.java 5 Sep 2003 06:11:11 -0000 1.3
+++ ReceiverTreeCellRenderer.java 19 Sep 2003 07:06:40 -0000 1.4
@@ -141,7 +141,12 @@
} else if (o instanceof String) {
setText(o.toString());
setIcon(null);
- } else {
+ }else if(o instanceof Generator){
+ Generator generator = (Generator) o;
+ setText(generator.getName());
+ setIcon(ChainsawIcons.ICON_HELP);
+ }
+ else {
setText("(Unknown Type) :: " + o);
}
1.2 +101 -41 jakarta-log4j/src/java/org/apache/log4j/chainsaw/Generator.java
Index: Generator.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/Generator.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Generator.java 25 Jun 2003 04:05:22 -0000 1.1
+++ Generator.java 19 Sep 2003 07:06:40 -0000 1.2
@@ -49,9 +49,12 @@
package org.apache.log4j.chainsaw;
+import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.MDC;
import org.apache.log4j.NDC;
+import org.apache.log4j.plugins.Receiver;
+import org.apache.log4j.spi.LoggingEvent;
/**
@@ -61,23 +64,31 @@
* @author Scott Deboy <sd...@apache.org>
*
*/
-public class Generator extends Thread {
- private static final Logger logger1 = Logger.getLogger("first logger");
- private static final Logger logger2 = Logger.getLogger("some other logger");
- private static final Logger logger3 = Logger.getLogger("another logger");
+public class Generator extends Receiver implements Runnable {
+ private static final Logger logger1 =
+ Logger.getLogger("com.mycompany.mycomponentA");
+ private static final Logger logger2 =
+ Logger.getLogger("com.mycompany.mycomponentB");
+ private static final Logger logger3 =
+ Logger.getLogger("com.someothercompany.corecomponent");
private final String baseString_;
+ private Thread thread;
+ private boolean shutdown;
- public Generator(String baseString) {
- baseString_ = baseString;
+ public Generator(String name) {
+ setName(name);
+ baseString_ = name;
}
- public static void main(String[] args) {
- Thread t1 = new Generator("first");
- Thread t2 = new Generator("second");
- Thread t3 = new Generator("third");
- t1.start();
- t2.start();
- t3.start();
+ private LoggingEvent createEvent(
+ Level level, Logger logger, String msg, Throwable t) {
+ LoggingEvent e =
+ new LoggingEvent(
+ logger.getClass().getName(), logger, System.currentTimeMillis(), level,
+ msg, t);
+ e.setProperty(ChainsawConstants.LOG4J_APP_KEY, getName());
+
+ return e;
}
public synchronized void run() {
@@ -86,38 +97,87 @@
int i = 0;
- while (i < 5000) {
- logger1.debug(
- "debugmsg " + i++
- + " g dg sdfa sadf sdf safd fsda asfd sdfa sdaf asfd asdf fasd fasd adfs fasd adfs fads afds afds afsd afsd afsd afsd afsd fasd asfd asfd afsd fasd afsd",
- new Exception("someexception-" + baseString_));
- logger1.info(
- "infomsg " + i++, new Exception("someexception-" + baseString_));
- logger1.warn(
- "warnmsg " + i++, new Exception("someexception-" + baseString_));
- logger1.error(
- "errormsg " + i++, new Exception("someexception-" + baseString_));
- logger2.debug(
- "debugmsg " + i++, new Exception("someexception-" + baseString_));
- logger2.info(
- "infomsg " + i++, new Exception("someexception-" + baseString_));
- logger2.warn(
- "warnmsg " + i++, new Exception("someexception-" + baseString_));
- logger2.error(
- "errormsg " + i++, new Exception("someexception-" + baseString_));
- logger3.debug(
- "debugmsg " + i++, new Exception("someexception-" + baseString_));
- logger3.info(
- "infomsg " + i++, new Exception("someexception-" + baseString_));
- logger3.warn(
- "warnmsg " + i++, new Exception("someexception-" + baseString_));
- logger3.error(
- "errormsg " + i++, new Exception("someexception-" + baseString_));
-
+ while (!shutdown) {
+ doPost(
+ createEvent(
+ Level.DEBUG, logger1,
+ "debugmsg " + i++
+ + " g dg sdfa sadf sdf safd fsda asfd sdfa sdaf asfd asdf fasd fasd adfs fasd adfs fads afds afds afsd afsd afsd afsd afsd fasd asfd asfd afsd fasd afsd",
+ new Exception("someexception-" + baseString_)));
+
+ // if (isAsSevereAsThreshold(Level.INFO)) {
+ // logger1.info(
+ // "infomsg " + i++, new Exception("someexception-" + baseString_));
+ // }
+ //
+ // if (isAsSevereAsThreshold(Level.WARN)) {
+ // logger1.warn(
+ // "warnmsg " + i++, new Exception("someexception-" + baseString_));
+ // }
+ //
+ // if (isAsSevereAsThreshold(Level.ERROR)) {
+ // logger1.error(
+ // "errormsg " + i++, new Exception("someexception-" + baseString_));
+ // }
+ //
+ // if (isAsSevereAsThreshold(Level.DEBUG)) {
+ // logger2.debug(
+ // "debugmsg " + i++, new Exception("someexception-" + baseString_));
+ // }
+ //
+ // if (isAsSevereAsThreshold(Level.INFO)) {
+ // logger2.info(
+ // "infomsg " + i++, new Exception("someexception-" + baseString_));
+ // }
+ //
+ // if (isAsSevereAsThreshold(Level.WARN)) {
+ // logger2.warn(
+ // "warnmsg " + i++, new Exception("someexception-" + baseString_));
+ // }
+ //
+ // if (isAsSevereAsThreshold(Level.ERROR)) {
+ // logger2.error(
+ // "errormsg " + i++, new Exception("someexception-" + baseString_));
+ // }
+ //
+ // if (isAsSevereAsThreshold(Level.DEBUG)) {
+ // logger3.debug(
+ // "debugmsg " + i++, new Exception("someexception-" + baseString_));
+ // }
+ //
+ // if (isAsSevereAsThreshold(Level.INFO)) {
+ // logger3.info(
+ // "infomsg " + i++, new Exception("someexception-" + baseString_));
+ // }
+ //
+ // if (isAsSevereAsThreshold(Level.WARN)) {
+ // logger3.warn(
+ // "warnmsg " + i++, new Exception("someexception-" + baseString_));
+ // }
+ //
+ // if (isAsSevereAsThreshold(Level.ERROR)) {
+ // logger3.error(
+ // "errormsg " + i++, new Exception("someexception-" + baseString_));
+ // }
try {
Thread.sleep(1000);
} catch (InterruptedException ie) {
}
}
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.log4j.plugins.Plugin#shutdown()
+ */
+ public void shutdown() {
+ shutdown = true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.log4j.spi.OptionHandler#activateOptions()
+ */
+ public void activateOptions() {
+ thread = new Thread(this);
+ thread.start();
}
}
1.1 jakarta-log4j/src/java/org/apache/log4j/chainsaw/help/Tutorial.java
Index: Tutorial.java
===================================================================
/*
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
* Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modifica-
* tion, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The end-user documentation included with the redistribution, if any, must
* include the following acknowledgment: "This product includes software
* developed by the Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself, if
* and wherever such third-party acknowledgments normally appear.
*
* 4. The names "log4j" and "Apache Software Foundation" must not be used to
* endorse or promote products derived from this software without prior
* written permission. For written permission, please contact
* apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache", nor may
* "Apache" appear in their name, without prior written permission of the
* Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
* DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* on behalf of the Apache Software Foundation. For more information on the
* Apache Software Foundation, please see <http://www.apache.org/>.
*
*/
package org.apache.log4j.chainsaw.help;
import org.apache.log4j.chainsaw.Generator;
import org.apache.log4j.plugins.Plugin;
import org.apache.log4j.plugins.PluginRegistry;
import javax.swing.JOptionPane;
/**
* A runnable element that installs into the Log4j environment some fake Receivers
* which generates events for use as a tutorial.
*
* @author Paul Smith
*/
public class Tutorial implements Runnable {
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
public void run() {
if (
JOptionPane.showConfirmDialog(
null,
"This will start some pretend receivers for us in the Tutorial. Is that ok?",
"Confirm", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
Plugin p = new Generator("Generator 1");
PluginRegistry.startPlugin(p);
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: log4j-dev-help@jakarta.apache.org