blob: 50f52fe4d9e57f2e3a1d0e7c3bd74530bf1b142b [file] [log] [blame]
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.log4j.helpers;
import java.io.Writer;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.DatagramPacket;
import java.net.UnknownHostException;
import java.net.SocketException;
import java.io.IOException;
/**
SyslogWriter is a wrapper around the java.net.DatagramSocket class
so that it behaves like a java.io.Writer.
@since 0.7.3
*/
public class SyslogWriter extends Writer {
final int SYSLOG_PORT = 514;
static String syslogHost;
private InetAddress address;
private DatagramSocket ds;
public
SyslogWriter(String syslogHost) {
this.syslogHost = syslogHost;
try {
this.address = InetAddress.getByName(syslogHost);
}
catch (UnknownHostException e) {
LogLog.error("Could not find " + syslogHost +
". All logging will FAIL.", e);
}
try {
this.ds = new DatagramSocket();
}
catch (SocketException e) {
e.printStackTrace();
LogLog.error("Could not instantiate DatagramSocket to " + syslogHost +
". All logging will FAIL.", e);
}
}
public
void write(char[] buf, int off, int len) throws IOException {
this.write(new String(buf, off, len));
}
public
void write(String string) throws IOException {
byte[] bytes = string.getBytes();
DatagramPacket packet = new DatagramPacket(bytes, bytes.length,
address, SYSLOG_PORT);
if(this.ds != null)
ds.send(packet);
}
public
void flush() {}
public
void close() {}
}