You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by ca...@apache.org on 2007/02/22 23:35:25 UTC
svn commit: r510695 - in /logging/log4j/branches/v1_2-branch:
src/java/org/apache/log4j/net/SyslogAppender.java
tests/src/java/org/apache/log4j/net/SyslogAppenderTest.java
Author: carnold
Date: Thu Feb 22 14:35:24 2007
New Revision: 510695
URL: http://svn.apache.org/viewvc?view=rev&rev=510695
Log:
Bug 40161: SyslogAppender is not logging header of the layout
Modified:
logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/net/SyslogAppender.java
logging/log4j/branches/v1_2-branch/tests/src/java/org/apache/log4j/net/SyslogAppenderTest.java
Modified: logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/net/SyslogAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/net/SyslogAppender.java?view=diff&rev=510695&r1=510694&r2=510695
==============================================================================
--- logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/net/SyslogAppender.java (original)
+++ logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/net/SyslogAppender.java Thu Feb 22 14:35:24 2007
@@ -117,6 +117,11 @@
*/
private String localHostname;
+ /**
+ * Set to true after the header of the layout has been sent or if it has none.
+ */
+ private boolean layoutHeaderChecked = false;
+
public
SyslogAppender() {
this.initSyslogFacilityStr();
@@ -146,6 +151,9 @@
closed = true;
if (sqw != null) {
try {
+ if (layoutHeaderChecked && layout != null && layout.getFooter() != null) {
+ sendLayoutMessage(layout.getFooter());
+ }
sqw.close();
sqw = null;
} catch(java.io.IOException ex) {
@@ -275,6 +283,13 @@
return;
}
+ if (!layoutHeaderChecked) {
+ if (layout != null && layout.getHeader() != null) {
+ sendLayoutMessage(layout.getHeader());
+ }
+ layoutHeaderChecked = true;
+ }
+
String hdr = getPacketHeader(event.timeStamp);
String packet = layout.format(event);
if(facilityPrinting || hdr.length() > 0) {
@@ -312,6 +327,10 @@
if (header) {
getLocalHostname();
}
+ if (layout != null && layout.getHeader() != null) {
+ sendLayoutMessage(layout.getHeader());
+ }
+ layoutHeaderChecked = true;
}
/**
@@ -458,5 +477,26 @@
return buf.toString();
}
return "";
+ }
+
+ /**
+ * Set header or footer of layout.
+ * @param msg message body, may not be null.
+ */
+ private void sendLayoutMessage(final String msg) {
+ if (sqw != null) {
+ String packet = msg;
+ String hdr = getPacketHeader(new Date().getTime());
+ if(facilityPrinting || hdr.length() > 0) {
+ StringBuffer buf = new StringBuffer(hdr);
+ if(facilityPrinting) {
+ buf.append(facilityStr);
+ }
+ buf.append(msg);
+ packet = buf.toString();
+ }
+ sqw.setLevel(6);
+ sqw.write(packet);
+ }
}
}
Modified: logging/log4j/branches/v1_2-branch/tests/src/java/org/apache/log4j/net/SyslogAppenderTest.java
URL: http://svn.apache.org/viewvc/logging/log4j/branches/v1_2-branch/tests/src/java/org/apache/log4j/net/SyslogAppenderTest.java?view=diff&rev=510695&r1=510694&r2=510695
==============================================================================
--- logging/log4j/branches/v1_2-branch/tests/src/java/org/apache/log4j/net/SyslogAppenderTest.java (original)
+++ logging/log4j/branches/v1_2-branch/tests/src/java/org/apache/log4j/net/SyslogAppenderTest.java Thu Feb 22 14:35:24 2007
@@ -25,6 +25,7 @@
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.VectorErrorHandler;
+import org.apache.log4j.HTMLLayout;
import java.util.StringTokenizer;
import java.net.DatagramSocket;
@@ -507,6 +508,38 @@
syslogDate = cal.getTime();
assertTrue(syslogDate.compareTo(preDate) >= 0);
assertTrue(syslogDate.compareTo(postDate) <= 0);
+ }
+
+
+ /**
+ * Tests that any header or footer in layout is sent.
+ * @throws Exception if exception during test.
+ */
+ public void testLayoutHeader() throws Exception {
+ DatagramSocket ds = new DatagramSocket();
+ ds.setSoTimeout(2000);
+ DatagramPacket p = new DatagramPacket(new byte[1000], 0, 1000);
+
+ SyslogAppender appender = new SyslogAppender();
+ appender.setSyslogHost("localhost:" + ds.getLocalPort());
+ appender.setName("name");
+ appender.setHeader(false);
+ HTMLLayout pl = new HTMLLayout();
+ appender.setLayout(pl);
+ appender.activateOptions();
+
+ Logger l = Logger.getRootLogger();
+ l.addAppender(appender);
+ l.info("Hello, World");
+ appender.close();
+ String[] s = new String[3];
+ for(int i = 0; i < 3; i++) {
+ ds.receive(p);
+ s[i] = new String(p.getData(), 0, p.getLength());
+ }
+ ds.close();
+ assertEquals("<14><!DOCTYPE", s[0].substring(0,13));
+ assertEquals("<14></table>", s[2].substring(0,12));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org