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.