psmith      2003/06/23 19:45:45

  Modified:    src/java/org/apache/log4j/xml XMLLayout.java
  Log:
  Sandbox version of XMLLayout now conforms to the new Layout contract.
  
  Revision  Changes    Path
  1.3       +43 -51    
jakarta-log4j-sandbox/src/java/org/apache/log4j/xml/XMLLayout.java
  
  Index: XMLLayout.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-log4j-sandbox/src/java/org/apache/log4j/xml/XMLLayout.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XMLLayout.java    29 Apr 2003 16:21:30 -0000      1.2
  +++ XMLLayout.java    24 Jun 2003 02:45:45 -0000      1.3
  @@ -51,6 +51,8 @@
   // Contributors:   Mathias Bogaert
   package org.apache.log4j.xml;
   
  +import java.io.IOException;
  +import java.io.Writer;
   import java.util.Iterator;
   import java.util.Set;
   
  @@ -94,9 +96,6 @@
    * @since 0.9.0
    * */
   public class XMLLayout extends Layout {
  -  private final int DEFAULT_SIZE = 256;
  -  private final int UPPER_LIMIT = 2048;
  -  private StringBuffer buf = new StringBuffer(DEFAULT_SIZE);
     private boolean locationInfo = false;
   
     /**
  @@ -128,108 +127,101 @@
     /**
      * Formats a [EMAIL PROTECTED] LoggingEvent} in conformance with the log4j.dtd.
      * */
  -  public String format(LoggingEvent event) {
  -    // Reset working buffer. If the buffer is too large, then we need a new
  -    // one in order to avoid the penalty of creating a large array.
  -    if (buf.capacity() > UPPER_LIMIT) {
  -      buf = new StringBuffer(DEFAULT_SIZE);
  -    } else {
  -      buf.setLength(0);
  -    }
  +  public void format(Writer output, LoggingEvent event)
  +   throws IOException {
   
       // We yield to the \r\n heresy.
  -    buf.append("<log4j:event logger=\"");
  -    buf.append(event.getLoggerName());
  -    buf.append("\" level=\"");
  -    buf.append(event.getLevel());
  -    buf.append("\" thread=\"");
  -    buf.append(event.getThreadName());
  -    buf.append("\" timestamp=\"");
  -    buf.append(event.timeStamp);
  -    buf.append("\">\r\n");
  +    output.write("<log4j:event logger=\"");
  +    output.write(event.getLoggerName());
  +    output.write("\" level=\"");
  +    output.write(String.valueOf(event.getLevel()));
  +    output.write("\" thread=\"");
  +    output.write(event.getThreadName());
  +    output.write("\" timestamp=\"");
  +    output.write(String.valueOf(event.timeStamp));
  +    output.write("\">\r\n");
   
  -    buf.append("<log4j:message><![CDATA[");
  +    output.write("<log4j:message><![CDATA[");
   
       // Append the rendered message. Also make sure to escape any
       // existing CDATA sections.
  -    Transform.appendEscapingCDATA(buf, event.getRenderedMessage());
  -    buf.append("]]></log4j:message>\r\n");
  +    Transform.appendEscapingCDATA(output, event.getRenderedMessage());
  +    output.write("]]></log4j:message>\r\n");
   
       String ndc = event.getNDC();
   
       if (ndc != null) {
  -      buf.append("<log4j:NDC><![CDATA[");
  -      buf.append(ndc);
  -      buf.append("]]></log4j:NDC>\r\n");
  +      output.write("<log4j:NDC><![CDATA[");
  +      output.write(ndc);
  +      output.write("]]></log4j:NDC>\r\n");
       }
   
       Set mdcSet = event.getMDCKeySet();
   
       if ((mdcSet != null) && (mdcSet.size() > 0)) {
  -      buf.append("<log4j:MDC>");
  +      output.write("<log4j:MDC>");
   
         Iterator iter = mdcSet.iterator();
   
         while (iter.hasNext()) {
           String propName = (String) iter.next();
  -        buf.append("<log4j:data name=\"" + propName);
  +        output.write("<log4j:data name=\"" + propName);
   
           String propValue = (String) event.getMDC(propName);
  -        buf.append("\" value=\"" + propValue);
  -        buf.append("\"/>\r\n");
  +        output.write("\" value=\"" + propValue);
  +        output.write("\"/>\r\n");
         }
   
  -      buf.append("</log4j:MDC>\r\n");
  +      output.write("</log4j:MDC>\r\n");
       }
   
       String[] s = event.getThrowableStrRep();
   
       if (s != null) {
  -      buf.append("<log4j:throwable><![CDATA[");
  +      output.write("<log4j:throwable><![CDATA[");
   
         for (int i = 0; i < s.length; i++) {
  -        buf.append(s[i]);
  -        buf.append("\r\n");
  +        output.write(s[i]);
  +        output.write("\r\n");
         }
   
  -      buf.append("]]></log4j:throwable>\r\n");
  +      output.write("]]></log4j:throwable>\r\n");
       }
   
       if (locationInfo) {
         LocationInfo locationInfo = event.getLocationInformation();
  -      buf.append("<log4j:locationInfo class=\"");
  -      buf.append(locationInfo.getClassName());
  -      buf.append("\" method=\"");
  -      buf.append(Transform.escapeTags(locationInfo.getMethodName()));
  -      buf.append("\" file=\"");
  -      buf.append(locationInfo.getFileName());
  -      buf.append("\" line=\"");
  -      buf.append(locationInfo.getLineNumber());
  -      buf.append("\"/>\r\n");
  +      output.write("<log4j:locationInfo class=\"");
  +      output.write(locationInfo.getClassName());
  +      output.write("\" method=\"");
  +      Transform.escapeTags(locationInfo.getMethodName(), output);
  +      output.write("\" file=\"");
  +      output.write(locationInfo.getFileName());
  +      output.write("\" line=\"");
  +      output.write(locationInfo.getLineNumber());
  +      output.write("\"/>\r\n");
       }
   
       Set propertySet = event.getPropertyKeySet();
   
       if ((propertySet != null) && (propertySet.size() > 0)) {
  -      buf.append("<log4j:properties>");
  +      output.write("<log4j:properties>");
   
         Iterator propIter = propertySet.iterator();
   
         while (propIter.hasNext()) {
           String propName = (String) propIter.next();
  -        buf.append("<log4j:data name=\"" + propName);
  +        output.write("<log4j:data name=\"" + propName);
   
           String propValue = (String) event.getProperty(propName);
  -        buf.append("\" value=\"" + propValue);
  -        buf.append("\"/>\r\n");
  +        output.write("\" value=\"" + propValue);
  +        output.write("\"/>\r\n");
         }
   
  -      buf.append("</log4j:properties>\r\n");
  +      output.write("</log4j:properties>\r\n");
       }
   
  -    buf.append("</log4j:event>\r\n\r\n");
  +    output.write("</log4j:event>\r\n\r\n");
   
  -    return buf.toString();
     }
   
     /**
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to