You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-cvs@jakarta.apache.org by ce...@locus.apache.org on 2000/12/20 16:57:35 UTC

cvs commit: jakarta-log4j/org/apache/log4j/xml/test SubClassTest.java

ceki        00/12/20 07:57:34

  Modified:    org/apache/log4j HTMLLayout.java Makefile NDC.java
               org/apache/log4j/nt NTEventLogAppender.java make.bat
                        nteventlog.cpp
               org/apache/log4j/xml/examples XMLSample.java XTest.java
               org/apache/log4j/xml/test SubClassTest.java
  Log:
  Modified HTMLLayout to print LocationInfo and to print WARN, ERROR, FATAL messages in red.
  
  Revision  Changes    Path
  1.6       +71 -8     jakarta-log4j/org/apache/log4j/HTMLLayout.java
  
  Index: HTMLLayout.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/HTMLLayout.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- HTMLLayout.java	2000/12/19 13:59:19	1.5
  +++ HTMLLayout.java	2000/12/20 15:57:23	1.6
  @@ -8,6 +8,7 @@
   package org.apache.log4j;
   
   import org.apache.log4j.spi.LoggingEvent;
  +import org.apache.log4j.helpers.OptionConverter;
   import java.io.StringWriter;
   import java.io.PrintWriter;
   import java.io.Writer;
  @@ -21,6 +22,18 @@
     // output buffer appended to when format() is invoked
     private StringBuffer sbuf = new StringBuffer(BUF_SIZE);
   
  +  /**
  +     A string constant used in naming the option for setting the the
  +     location information flag.  Current value of this string
  +     constant is <b>LocationInfo</b>.  
  +
  +     <p>Note that all option keys are case sensitive.
  +  */
  +  public static final String LOCATION_INFO_OPTION = "LocationInfo";
  +
  +  // Print no location info by default
  +  boolean locationInfo = false;
  +
     public
     void activateOptions() {
     }
  @@ -44,8 +57,15 @@
       sbuf.append(event.getThreadName());
       sbuf.append("</td>\r\n");
   
  +
       sbuf.append("<td>");
  -    sbuf.append(event.priority);
  +    if(event.priority.isGreaterOrEqual(Priority.WARN)) {
  +      sbuf.append("<font color=\"#FF0000\">");
  +      sbuf.append(event.priority);      
  +      sbuf.append("</font>");
  +    } else {
  +      sbuf.append(event.priority);      
  +    }
       sbuf.append("</td>\r\n");
   
       sbuf.append("<td>");
  @@ -56,6 +76,15 @@
       sbuf.append(event.getNDC());
       sbuf.append("</td>\r\n");
   
  +    if(locationInfo) {
  +      event.setLocationInformation();
  +      sbuf.append("<td>");
  +      sbuf.append(event.locationInfo.getFileName());
  +      sbuf.append(':');
  +      sbuf.append(event.locationInfo.getLineNumber());
  +      sbuf.append("</td>\r\n");
  +    }
  +
   
       sbuf.append("<td>");
       sbuf.append(event.message);
  @@ -65,7 +94,7 @@
       sbuf.append("</tr>");
   
       if(event.throwable != null) {
  -      sbuf.append("\r\n<tr><td colspan=\"6\">");
  +      sbuf.append("\r\n<tr><td colspan=\"7\">");
         sbuf.append(getThrowableAsHTML(event.throwable));
         sbuf.append("</td></tr>");
       }
  @@ -90,10 +119,16 @@
     */
     public
     String getHeader() {
  -    return "<html><body>\r\n"+
  -      "<table border=\"1\" cellpadding=\"2\">\r\n<tr>\r\n"+
  -      "<th>Time</th><th>Thread</th><th>Priority</th><th>Category</th>"+
  -      "<th>NDC</th><th>Message</th></tr>";
  +    StringBuffer sbuf = new StringBuffer();
  +    sbuf.append("<html><body>\r\n");
  +    sbuf.append("<table border=\"1\" cellpadding=\"2\">\r\n<tr>\r\n");
  +    sbuf.append("<th>Time</th><th>Thread</th><th>Priority</th><th>Category</th>");
  +    sbuf.append("<th>NDC</th>");
  +    if(locationInfo) {
  +      sbuf.append("<th>File:Line</th>");
  +    }
  +    sbuf.append("<th>Message</th></tr>");
  +    return sbuf.toString();
     }
   
     /**
  @@ -107,7 +142,7 @@
   
     public
     String[] getOptionStrings() {
  -    return new String[0];
  +    return new String[] {LOCATION_INFO_OPTION};
     }
   
     String getThrowableAsHTML(Throwable throwable) {
  @@ -127,10 +162,33 @@
       return false;
     }
   
  +  /**
  +     Set HTMLLayout specific options.
  +
  +     <p>The <b>LocationInfo</b> option takes a boolean value. By
  +     default, it is set to false which means there will be no location
  +     information output by this layoout. If the the option is set to
  +     true, then the file name and line number of the statement
  +     at the origin of the log statement will be output. 
  +
  +     <p>If you are embedding this layout within an {@link
  +     org.apache.log4j.net.SMTPAppender} then make sure to set the
  +     <b>LocationInfo</b> option of that appender as well.
  +     
  +   */
     public
     void setOption(String key, String value) {
  +    if(value == null) return;
  +
  +    if (key.equals(LOCATION_INFO_OPTION)) {
  +      locationInfo = OptionConverter.toBoolean(value, locationInfo);
  +    }
     }
   
  +
  +  /**
  +     Format exceptions in HTML aware way.
  +   */
     static class HTMLPrintWriter extends PrintWriter {
       
       static String TRACE_PREFIX = "<br>&nbsp;&nbsp;&nbsp;&nbsp;";
  @@ -140,13 +198,18 @@
         super(writer);
       }
   
  +    /**
  +       Some JDKs use prinln(char[])
  +     */
       public
       void println(char[] c) {
         write(TRACE_PREFIX);
         this.write(c);
       }
   
  -  
  +    /**
  +       Yet others use println(String). Go figure.
  +    */    
       public
       void println(String s) {
         write(TRACE_PREFIX);
  
  
  
  1.3       +1 -1      jakarta-log4j/org/apache/log4j/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/Makefile,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Makefile	2000/12/14 21:07:18	1.2
  +++ Makefile	2000/12/20 15:57:24	1.3
  @@ -21,7 +21,7 @@
   	Appender.java \
   	Priority.java\
   
  -SUBDIRS :=helpers spi or xml gui net nt varia test performance examples 
  +SUBDIRS :=helpers spi or xml net nt varia test performance examples gui
   
   
   # include master-rule file
  
  
  
  1.3       +2 -3      jakarta-log4j/org/apache/log4j/NDC.java
  
  Index: NDC.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/NDC.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- NDC.java	2000/12/14 21:07:18	1.2
  +++ NDC.java	2000/12/20 15:57:24	1.3
  @@ -248,9 +248,8 @@
       int size = v.size();
       for(int i = 0; i < size; i++) {
         Thread t = (Thread) v.elementAt(i);
  -      System.out.println("Lazy NDC removal for thread [" + t.getName() + "] ("
  -			 + ht.size() + ").");
  -
  +      LogLog.debug("Lazy NDC removal for thread [" + t.getName() + "] ("+ 
  +		   ht.size() + ").");
         ht.remove(t);
       }
     }
  
  
  
  1.3       +1 -1      jakarta-log4j/org/apache/log4j/nt/NTEventLogAppender.java
  
  Index: NTEventLogAppender.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/nt/NTEventLogAppender.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- NTEventLogAppender.java	2000/12/14 21:08:00	1.2
  +++ NTEventLogAppender.java	2000/12/20 15:57:27	1.3
  @@ -17,7 +17,7 @@
      Append to the NT event log system. 
   
      <p><b>WARNING</b> This appender can only be installed and used on a
  -   Windows system.
  +   Windows system under <b>JDK 1.2</b> or above.
   
      <p>Do not forget to place the file NTEventLogAppender.dll in a
      directory that is on the PATH of the Windows system. Otherwise, you
  
  
  
  1.2       +3 -2      jakarta-log4j/org/apache/log4j/nt/make.bat
  
  Index: make.bat
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/nt/make.bat,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- make.bat	2000/12/14 09:31:31	1.1
  +++ make.bat	2000/12/20 15:57:27	1.2
  @@ -2,13 +2,14 @@
   
   REM This batch file is not intended for general use.
   
  -javah org.log4j.nt.NTEventLogAppender
  -javah org.log4j.Priority
  +javah org.apache.log4j.nt.NTEventLogAppender
  +javah org.apache.log4j.Priority
   
   MC EventLogCategories.mc
   
   RC -r -fo EventLogCategories.res EventLogCategories.rc
   
  +#SET JDK=c:\java\jdk1.1.7B\
   SET JDK=c:\java\jdk1.3\
   
   @echo "Compiling"
  
  
  
  1.2       +15 -18    jakarta-log4j/org/apache/log4j/nt/nteventlog.cpp
  
  Index: nteventlog.cpp
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/nt/nteventlog.cpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- nteventlog.cpp	2000/12/14 09:31:31	1.1
  +++ nteventlog.cpp	2000/12/20 15:57:28	1.2
  @@ -1,7 +1,7 @@
   #ifndef NtEventLogAppender_h
   #define NtEventLogAppender_h
  -#include "org_log4j_Priority.h"
  -#include "org_log4j_nt_NTEventLogAppender.h"
  +#include "org_apache_log4j_Priority.h"
  +#include "org_apache_log4j_nt_NTEventLogAppender.h"
   #include <windows.h>
   
   // Borrowed unabashedly from the JNI Programmer's Guide
  @@ -24,10 +24,10 @@
     jthrowable exc;
     char *nstr = 0;
     
  -  if (env->EnsureLocalCapacity(2) < 0) {
  -    // out of memory
  -    return 0;
  -  }
  +  //if (env->EnsureLocalCapacity(2) < 0) {
  +  // out of memory
  +  //return 0;
  +  //}
   
     if (midStringGetBytes == 0) {
       // Lookup and cache the String.getBytes() method id.
  @@ -88,18 +88,15 @@
     WORD ret_val;
     
     switch (priority) {
  -  case org_log4j_Priority_EMERG_INT:
  -  case org_log4j_Priority_ALERT_INT:
  -  case org_log4j_Priority_CRIT_INT:
  -  case org_log4j_Priority_ERROR_INT:
  +  case org_apache_log4j_Priority_FATAL_INT:
  +  case org_apache_log4j_Priority_ERROR_INT:
       ret_val = EVENTLOG_ERROR_TYPE;
       break;
  -  case org_log4j_Priority_WARN_INT:
  +  case org_apache_log4j_Priority_WARN_INT:
       ret_val = EVENTLOG_WARNING_TYPE;
       break;
  -  case org_log4j_Priority_NOTICE_INT:
  -  case org_log4j_Priority_INFO_INT:
  -  case org_log4j_Priority_DEBUG_INT:
  +  case org_apache_log4j_Priority_INFO_INT:
  +  case org_apache_log4j_Priority_DEBUG_INT:
     default:
       ret_val = EVENTLOG_INFORMATION_TYPE;
       break;
  @@ -154,7 +151,7 @@
    * Method:    registerEventSource
    * Signature: (Ljava/lang/String;Ljava/lang/String;)I
    */
  -JNIEXPORT jint JNICALL Java_org_log4j_nt_NTEventLogAppender_registerEventSource(
  +JNIEXPORT jint JNICALL Java_org_apache_log4j_nt_NTEventLogAppender_registerEventSource(
      JNIEnv *env, jobject java_this, jstring server, jstring source) {
     
     char *nserver = 0;
  @@ -174,11 +171,11 @@
   }
   
   /*
  - * Class:     org_log4j_nt_NTEventLogAppender
  + * Class:     org_apache_log4j_nt_NTEventLogAppender
    * Method:    reportEvent
    * Signature: (ILjava/lang/String;I)V
    */
  -JNIEXPORT void JNICALL Java_org_log4j_nt_NTEventLogAppender_reportEvent(
  +JNIEXPORT void JNICALL Java_org_apache_log4j_nt_NTEventLogAppender_reportEvent(
      JNIEnv *env, jobject java_this, jint handle, jstring jstr, jint priority) {
     
     jboolean localHandle = JNI_FALSE;
  @@ -215,7 +212,7 @@
    * Method:    deregisterEventSource
    * Signature: (I)V
    */
  -JNIEXPORT void JNICALL Java_org_log4j_nt_NTEventLogAppender_deregisterEventSource(
  +JNIEXPORT void JNICALL Java_org_apache_log4j_nt_NTEventLogAppender_deregisterEventSource(
   JNIEnv *env, 
   jobject java_this, 
   jint handle)
  
  
  
  1.3       +1 -28     jakarta-log4j/org/apache/log4j/xml/examples/XMLSample.java
  
  Index: XMLSample.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/xml/examples/XMLSample.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XMLSample.java	2000/12/14 21:08:41	1.2
  +++ XMLSample.java	2000/12/20 15:57:30	1.3
  @@ -4,9 +4,6 @@
   import org.apache.log4j.xml.DOMConfigurator;
   import org.apache.log4j.Category;
   import org.apache.log4j.Priority;
  -import org.apache.xerces.parsers.DOMParser;
  -import java.io.FileInputStream;
  -import org.xml.sax.InputSource;
   import java.net.*;
   
   /**
  @@ -49,31 +46,7 @@
     
     static
     void init(String configFile) {
  -    try {
  -      DOMParser domParser = new DOMParser();
  -      // We want validation.
  -      domParser.setFeature("http://xml.org/sax/features/validation", true);
  -      domParser.setErrorHandler(new ReportParserError());
  -      InputSource inputSource = new InputSource(new FileInputStream(configFile));
  -      // log4j.dtd is placed in org.apache.log4j/xml/log4j.dtd. The
  -      // DOMConfigurator class is placed in the same directory and can
  -      // find it.
  -      URL dtdURL = DOMConfigurator.class.getResource("log4j.dtd");
  -      if(dtdURL == null) {
  -	System.err.println("Could not find log4j.dtd.");
  -      }
  -      else {
  -	System.err.println("URL to log4j.dtd is " + dtdURL.toString());
  -	inputSource.setSystemId(dtdURL.toString());
  -      }
  -      domParser.parse(inputSource);      
  -      DOMConfigurator.configure(domParser.getDocument().getDocumentElement() );
  -    }
  -    catch(Exception e) {
  -      System.err.println("Could not initialize XMLSample program.");
  -      e.printStackTrace();
  -      System.exit(1);		
  -    }
  +    DOMConfigurator.configure(configFile);
     }
   
     static
  
  
  
  1.3       +1 -32     jakarta-log4j/org/apache/log4j/xml/examples/XTest.java
  
  Index: XTest.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/xml/examples/XTest.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XTest.java	2000/12/14 21:08:41	1.2
  +++ XTest.java	2000/12/20 15:57:30	1.3
  @@ -1,16 +1,9 @@
   
   package org.apache.log4j.xml.examples;
   
  -
  -import org.apache.xerces.parsers.DOMParser;
   import org.apache.log4j.xml.DOMConfigurator;
   import org.apache.log4j.Category;
   import org.apache.log4j.Priority;
  -//import org.apache.log4j.helpers.CategoryFactory;
  -import org.apache.log4j.xml.examples.XPriority;
  -import org.apache.xerces.parsers.DOMParser;
  -import java.io.FileInputStream;
  -import org.xml.sax.InputSource;
   import java.net.*;
   
   /**
  @@ -55,31 +48,7 @@
     
     static
     void init(String configFile) {
  -    try {
  -      DOMParser domParser = new DOMParser();
  -      // We want validation.
  -      domParser.setFeature("http://xml.org/sax/features/validation", true);
  -      domParser.setErrorHandler(new ReportParserError());
  -      InputSource inputSource = new InputSource(new FileInputStream(configFile));
  -      // log4j.dtd is placed in org.apache.log4j/xml/log4j.dtd. The
  -      // DOMConfigurator class is placed in the same directory and can
  -      // find it.
  -      URL dtdURL = DOMConfigurator.class.getResource("log4j.dtd");
  -      if(dtdURL == null) {
  -	System.err.println("Could not find log4j.dtd.");
  -      }
  -      else {
  -	System.err.println("URL to log4j.dtd is " + dtdURL.toString());
  -	inputSource.setSystemId(dtdURL.toString());
  -      }
  -      domParser.parse(inputSource);      
  -      DOMConfigurator.configure(domParser.getDocument().getDocumentElement());
  -    }
  -    catch(Exception e) {
  -      System.err.println("Could not initialize XMLSample program.");
  -      e.printStackTrace();
  -      System.exit(1);		
  -    }
  +    DOMConfigurator.configure(configFile);
     }
   
     static
  
  
  
  1.3       +4 -15     jakarta-log4j/org/apache/log4j/xml/test/SubClassTest.java
  
  Index: SubClassTest.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/xml/test/SubClassTest.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SubClassTest.java	2000/12/14 21:08:42	1.2
  +++ SubClassTest.java	2000/12/20 15:57:32	1.3
  @@ -5,9 +5,9 @@
   import org.apache.log4j.Category;
   import org.apache.log4j.Priority;
   import org.apache.log4j.xml.examples.ReportParserError;
  -import org.apache.xerces.parsers.DOMParser;
  -import java.io.FileInputStream;
  -import org.xml.sax.InputSource;
  +//import org.apache.xerces.parsers.DOMParser;
  +//import java.io.FileInputStream;
  +//import org.xml.sax.InputSource;
   
   /**
      @author Ceki G&uuml;lc&uuml;
  @@ -40,18 +40,7 @@
     
     static
     void init(String configFile) {
  -    try {
  -      DOMParser domParser = new DOMParser();
  -      domParser.setFeature("http://xml.org/sax/features/validation", true);
  -      domParser.setErrorHandler(new ReportParserError());      
  -      domParser.parse(new InputSource(configFile));
  -      DOMConfigurator.configure(domParser.getDocument().getDocumentElement() );
  -    }
  -    catch(Exception e) {
  -      System.err.println("Could not initialize test program.");
  -      e.printStackTrace();
  -      System.exit(1);		
  -    }
  +    DOMConfigurator.configure(configFile);
     }
   
     static