Onlyl until the changes get merged in. I think the sandbox version of XMLLayout includes some extra detail that isn't in the current log4j core.
If you're happy for me to review the differences and patch log4j, I can do that. I'd prefer to merge as much back into the core if we can, but I'm also warey of too much change. cheers, Paul > -----Original Message----- > From: Ceki Gülcü [mailto:[EMAIL PROTECTED] > Sent: Tuesday, 24 June 2003 5:16 PM > To: Log4J Developers List > Subject: Re: cvs commit: > jakarta-log4j-sandbox/src/java/org/apache/log4j/xml XMLLayout.java > > > > Hi Paul, > > This commit was probably not necessary at all. Having > duplicates lying > around makes it very difficult to maintain the code. Now that > both Scott > and you have access to the log4j CVS > > At 02:45 AM 6/24/2003 +0000, you wrote: > >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] > > -- > Ceki For log4j documentation consider "The complete log4j manual" > ISBN: 2970036908 http://www.qos.ch/shop/products/clm_t.jsp > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]