diff --git a/src/java/org/apache/log4j/chainsaw/ControlPanel.java b/src/java/org/apache/log4j/chainsaw/ControlPanel.java
index 741edec..d9169e7 100644
--- a/src/java/org/apache/log4j/chainsaw/ControlPanel.java
+++ b/src/java/org/apache/log4j/chainsaw/ControlPanel.java
@@ -18,7 +18,7 @@
 import javax.swing.JTextField;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
-import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
 import org.apache.log4j.Priority;
 
 /**
@@ -28,8 +28,8 @@
  */
 class ControlPanel extends JPanel {
     /** use the log messages **/
-    private static final Category LOG = 
-                                  Category.getInstance(ControlPanel.class);
+    private static final Logger LOG = 
+                                  Logger.getLogger(ControlPanel.class);
 
     /**
      * Creates a new <code>ControlPanel</code> instance.
@@ -61,7 +61,7 @@
         add(label);
 
         c.gridy++;
-        label = new JLabel("Filter Category:");
+        label = new JLabel("Filter Logger:");
         gridbag.setConstraints(label, c);
         add(label);
 
diff --git a/src/java/org/apache/log4j/chainsaw/DetailPanel.java b/src/java/org/apache/log4j/chainsaw/DetailPanel.java
index c051987..9b28748 100644
--- a/src/java/org/apache/log4j/chainsaw/DetailPanel.java
+++ b/src/java/org/apache/log4j/chainsaw/DetailPanel.java
@@ -17,7 +17,7 @@
 import javax.swing.ListSelectionModel;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
-import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
 
 /**
  * A panel for showing a stack trace.
@@ -29,8 +29,8 @@
     implements ListSelectionListener
 {
     /** used to log events **/
-    private static final Category LOG =
-        Category.getInstance(DetailPanel.class);
+    private static final Logger LOG =
+        Logger.getLogger(DetailPanel.class);
 
     /** used to format the logging event **/
     private static final MessageFormat FORMATTER = new MessageFormat(
@@ -38,7 +38,7 @@
         "&nbsp;&nbsp;<b>Priority:</b> <code>{1}</code>" +
         "&nbsp;&nbsp;<b>Thread:</b> <code>{2}</code>" +
         "&nbsp;&nbsp;<b>NDC:</b> <code>{3}</code>" +
-        "<br><b>Category:</b> <code>{4}</code>" +
+        "<br><b>Logger:</b> <code>{4}</code>" +
         "<br><b>Location:</b> <code>{5}</code>" +
         "<br><b>Message:</b>" +
         "<pre>{6}</pre>" +
diff --git a/src/java/org/apache/log4j/chainsaw/ExitAction.java b/src/java/org/apache/log4j/chainsaw/ExitAction.java
index 8fb0ce8..c8eda2a 100644
--- a/src/java/org/apache/log4j/chainsaw/ExitAction.java
+++ b/src/java/org/apache/log4j/chainsaw/ExitAction.java
@@ -8,7 +8,7 @@
 
 import java.awt.event.ActionEvent;
 import javax.swing.AbstractAction;
-import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
 
 /**
  * Encapsulates the action to exit.
@@ -20,7 +20,7 @@
     extends AbstractAction
 {
     /** use to log messages **/
-    private static final Category LOG = Category.getInstance(ExitAction.class);
+    private static final Logger LOG = Logger.getLogger(ExitAction.class);
     /** The instance to share **/
     public static final ExitAction INSTANCE = new ExitAction();
 
diff --git a/src/java/org/apache/log4j/chainsaw/LoadXMLAction.java b/src/java/org/apache/log4j/chainsaw/LoadXMLAction.java
index 9912e7d..cc91139 100644
--- a/src/java/org/apache/log4j/chainsaw/LoadXMLAction.java
+++ b/src/java/org/apache/log4j/chainsaw/LoadXMLAction.java
@@ -16,7 +16,7 @@
 import javax.swing.JOptionPane;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParserFactory;
-import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
@@ -31,8 +31,7 @@
     extends AbstractAction
 {
     /** use to log messages **/
-    private static final Category LOG =
-        Category.getInstance(LoadXMLAction.class);
+    private static final Logger LOG = Logger.getLogger(LoadXMLAction.class);
 
     /** the parent frame **/
     private final JFrame mParent;
diff --git a/src/java/org/apache/log4j/chainsaw/Main.java b/src/java/org/apache/log4j/chainsaw/Main.java
index b67a9ae..9dacd28 100644
--- a/src/java/org/apache/log4j/chainsaw/Main.java
+++ b/src/java/org/apache/log4j/chainsaw/Main.java
@@ -23,7 +23,7 @@
 import javax.swing.JSplitPane;
 import javax.swing.JTable;
 import javax.swing.ListSelectionModel;
-import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
 import org.apache.log4j.PropertyConfigurator;
 
 /**
@@ -41,7 +41,7 @@
     public static final String PORT_PROP_NAME = "chainsaw.port";
 
     /** use to log messages **/
-    private static final Category LOG = Category.getInstance(Main.class);
+    private static final Logger LOG = Logger.getLogger(Main.class);
 
 
     /**
@@ -162,7 +162,7 @@
     /** initialise log4j **/
     private static void initLog4J() {
         final Properties props = new Properties();
-        props.setProperty("log4j.rootCategory", "DEBUG, A1");
+        props.setProperty("log4j.rootLogger", "DEBUG, A1");
         props.setProperty("log4j.appender.A1",
                           "org.apache.log4j.ConsoleAppender");
         props.setProperty("log4j.appender.A1.layout",
diff --git a/src/java/org/apache/log4j/chainsaw/MyTableModel.java b/src/java/org/apache/log4j/chainsaw/MyTableModel.java
index d1af076..b0d8898 100644
--- a/src/java/org/apache/log4j/chainsaw/MyTableModel.java
+++ b/src/java/org/apache/log4j/chainsaw/MyTableModel.java
@@ -16,7 +16,7 @@
 import java.util.TreeSet;
 import javax.swing.table.AbstractTableModel;
 import org.apache.log4j.Priority;
-import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
 
 /**
  * Represents a list of <code>EventDetails</code> objects that are sorted on
@@ -29,8 +29,7 @@
 {
 
     /** used to log messages **/
-    private static final Category LOG =
-        Category.getInstance(MyTableModel.class);
+    private static final Logger LOG = Logger.getLogger(MyTableModel.class);
 
     /** use the compare logging events **/
     private static final Comparator MY_COMP = new Comparator()
