This commit was manufactured by cvs2svn to create tag 'v1_2_7'.
diff --git a/src/java/org/apache/log4j/chainsaw/EventDetails.java b/src/java/org/apache/log4j/chainsaw/EventDetails.java
index 12ddc51..a0538e6 100644
--- a/src/java/org/apache/log4j/chainsaw/EventDetails.java
+++ b/src/java/org/apache/log4j/chainsaw/EventDetails.java
@@ -73,8 +73,8 @@
     EventDetails(LoggingEvent aEvent) {
 
         this(aEvent.timeStamp,
-             aEvent.level,
-             aEvent.categoryName,
+             aEvent.getLevel(),
+             aEvent.getLoggerName(),
              aEvent.getNDC(),
              aEvent.getThreadName(),
              aEvent.getRenderedMessage(),
diff --git a/src/java/org/apache/log4j/chainsaw/LoggingReceiver.java b/src/java/org/apache/log4j/chainsaw/LoggingReceiver.java
index fc9cb43..3cd3455 100644
--- a/src/java/org/apache/log4j/chainsaw/LoggingReceiver.java
+++ b/src/java/org/apache/log4j/chainsaw/LoggingReceiver.java
@@ -12,7 +12,7 @@
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.net.SocketException;
-import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
 import org.apache.log4j.spi.LoggingEvent;
 
 /**
@@ -21,12 +21,9 @@
  *
  * @author <a href="mailto:oliver@puppycrawl.com">Oliver Burn</a>
  */
-class LoggingReceiver
-    extends Thread
-{
+class LoggingReceiver extends Thread {
     /** used to log messages **/
-    private static final Category LOG =
-        Category.getInstance(LoggingReceiver.class);
+    private static final Logger LOG = Logger.getLogger(LoggingReceiver.class);
 
     /**
      * Helper that actually processes a client connection. It receives events
@@ -34,9 +31,7 @@
      *
      * @author <a href="mailto:oliver@puppycrawl.com">Oliver Burn</a>
      */
-    private class Slurper
-        implements Runnable
-    {
+    private class Slurper implements Runnable {
         /** socket connection to read events from **/
         private final Socket mClient;
 
@@ -90,9 +85,7 @@
      * @param aPort port to listen on
      * @throws IOException if an error occurs
      */
-    LoggingReceiver(MyTableModel aModel, int aPort)
-        throws IOException
-    {
+    LoggingReceiver(MyTableModel aModel, int aPort) throws IOException {
         setDaemon(true);
         mModel = aModel;
         mSvrSock = new ServerSocket(aPort);
diff --git a/src/java/org/apache/log4j/chainsaw/XMLFileHandler.java b/src/java/org/apache/log4j/chainsaw/XMLFileHandler.java
index 9a6ef8b..a5e7d4f 100644
--- a/src/java/org/apache/log4j/chainsaw/XMLFileHandler.java
+++ b/src/java/org/apache/log4j/chainsaw/XMLFileHandler.java
@@ -37,12 +37,10 @@
     private final MyTableModel mModel;
     /** the number of events in the document **/
     private int mNumEvents;
-    /** the current element being parsed **/
-    private String mCurrentElement;
 
     /** the time of the event **/
     private long mTimeStamp;
-    /** the priority of the event **/
+    /** the priority (level) of the event **/
     private Priority mPriority;
     /** the category of the event **/
     private String mCategoryName;
@@ -56,7 +54,8 @@
     private String[] mThrowableStrRep;
     /** the location details for the event **/
     private String mLocationDetails;
-
+    /** buffer for collecting text **/
+    private final StringBuffer mBuf = new StringBuffer();
 
     /**
      * Creates a new <code>XMLFileHandler</code> instance.
@@ -76,13 +75,24 @@
 
     /** @see DefaultHandler **/
     public void characters(char[] aChars, int aStart, int aLength) {
-        if (mCurrentElement == TAG_NDC) {
-            mNDC = new String(aChars, aStart, aLength);
-        } else if (mCurrentElement == TAG_MESSAGE) {
-            mMessage = new String(aChars, aStart, aLength);
-        } else if (mCurrentElement == TAG_THROWABLE) {
+        mBuf.append(String.valueOf(aChars, aStart, aLength));
+    }
+
+    /** @see DefaultHandler **/
+    public void endElement(String aNamespaceURI,
+                           String aLocalName,
+                           String aQName)
+    {
+        if (TAG_EVENT.equals(aQName)) {
+            addEvent();
+            resetData();
+        } else if (TAG_NDC.equals(aQName)) {
+            mNDC = mBuf.toString();
+        } else if (TAG_MESSAGE.equals(aQName)) {
+            mMessage = mBuf.toString();
+        } else if (TAG_THROWABLE.equals(aQName)) {
             final StringTokenizer st =
-                new StringTokenizer(new String(aChars, aStart, aLength), "\t");
+                new StringTokenizer(mBuf.toString(), "\n\t");
             mThrowableStrRep = new String[st.countTokens()];
             if (mThrowableStrRep.length > 0) {
                 mThrowableStrRep[0] = st.nextToken();
@@ -94,40 +104,23 @@
     }
 
     /** @see DefaultHandler **/
-    public void endElement(String aNamespaceURI,
-                           String aLocalName,
-                           String aQName)
-    {
-        if (TAG_EVENT.equals(aQName)) {
-            addEvent();
-            resetData();
-        } else if (mCurrentElement != TAG_EVENT) {
-            mCurrentElement = TAG_EVENT; // hack - but only thing I care about
-        }
-    }
-
-    /** @see DefaultHandler **/
     public void startElement(String aNamespaceURI,
                              String aLocalName,
                              String aQName,
                              Attributes aAtts)
     {
+        mBuf.setLength(0);
+
         if (TAG_EVENT.equals(aQName)) {
             mThreadName = aAtts.getValue("thread");
             mTimeStamp = Long.parseLong(aAtts.getValue("timestamp"));
-            mCategoryName = aAtts.getValue("category");
-            mPriority = Priority.toPriority(aAtts.getValue("priority"));
+            mCategoryName = aAtts.getValue("logger");
+            mPriority = Priority.toPriority(aAtts.getValue("level"));
         } else if (TAG_LOCATION_INFO.equals(aQName)) {
             mLocationDetails = aAtts.getValue("class") + "."
                 + aAtts.getValue("method")
                 + "(" + aAtts.getValue("file") + ":" + aAtts.getValue("line")
                 + ")";
-        } else if (TAG_NDC.equals(aQName)) {
-            mCurrentElement = TAG_NDC;
-        } else if (TAG_MESSAGE.equals(aQName)) {
-            mCurrentElement = TAG_MESSAGE;
-        } else if (TAG_THROWABLE.equals(aQName)) {
-            mCurrentElement = TAG_THROWABLE;
         }
     }