Index: /home/gunter/work/log4j-v1_2-branch/src/java/org/apache/log4j/helpers/SyslogWriter.java
===================================================================
--- /home/gunter/work/log4j-v1_2-branch/src/java/org/apache/log4j/helpers/SyslogWriter.java (revision 410357)
+++ /home/gunter/work/log4j-v1_2-branch/src/java/org/apache/log4j/helpers/SyslogWriter.java (working copy)
@@ -34,8 +34,8 @@
public class SyslogWriter extends Writer {
final int SYSLOG_PORT = 514;
- static String syslogHost;
+ private int port = SYSLOG_PORT;
private InetAddress address;
private DatagramSocket ds;
@@ -41,7 +41,16 @@
public
SyslogWriter(String syslogHost) {
- this.syslogHost = syslogHost;
+ int colon = syslogHost.indexOf(':');
+ if (colon != -1) {
+ try {
+ port = parsePort(syslogHost.substring(colon + 1));
+ } catch (IllegalArgumentException e) {
+ LogLog.error("Illegal port specification in " + syslogHost +
+ ". Logging will go to syslog port 514.");
+ }
+ syslogHost = syslogHost.substring(0, colon);
+ }
try {
this.address = InetAddress.getByName(syslogHost);
@@ -61,6 +70,13 @@
}
}
+ private static
+ int parsePort(String s) {
+ int no = Integer.parseInt(s);
+ if (no <= 0 || no > 0xffff)
+ throw new IllegalArgumentException();
+ return no;
+ }
public
void write(char[] buf, int off, int len) throws IOException {
@@ -71,7 +87,7 @@
void write(String string) throws IOException {
byte[] bytes = string.getBytes();
DatagramPacket packet = new DatagramPacket(bytes, bytes.length,
- address, SYSLOG_PORT);
+ address, port );
if(this.ds != null)
ds.send(packet);
Index: /home/gunter/work/log4j-v1_2-branch/src/java/org/apache/log4j/net/SyslogAppender.java
===================================================================
--- /home/gunter/work/log4j-v1_2-branch/src/java/org/apache/log4j/net/SyslogAppender.java (revision 410357)
+++ /home/gunter/work/log4j-v1_2-branch/src/java/org/apache/log4j/net/SyslogAppender.java (working copy)
@@ -287,7 +287,8 @@
/**
The SyslogHost option is the name of the the syslog host
- where log output should go.
+ where log output should go. Format: host[:port]. If no port number
+ is specified, log output goes to syslog standard port 514.
WARNING If the SyslogHost is not set, then this appender
will fail.