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]