FileDocCategorySizeDatePackage
SocketHandler.javaAPI DocJava SE 5 API5423Fri Aug 26 14:57:28 BST 2005java.util.logging

SocketHandler

public class SocketHandler extends StreamHandler
Simple network logging Handler.

LogRecords are published to a network stream connection. By default the XMLFormatter class is used for formatting.

Configuration: By default each SocketHandler is initialized using the following LogManager configuration properties. If properties are not defined (or have invalid values) then the specified default values are used.

  • java.util.logging.SocketHandler.level specifies the default level for the Handler (defaults to Level.ALL).
  • java.util.logging.SocketHandler.filter specifies the name of a Filter class to use (defaults to no Filter).
  • java.util.logging.SocketHandler.formatter specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter).
  • java.util.logging.SocketHandler.encoding the name of the character set encoding to use (defaults to the default platform encoding).
  • java.util.logging.SocketHandler.host specifies the target host name to connect to (no default).
  • java.util.logging.SocketHandler.port specifies the target TCP port to use (no default).

The output IO stream is buffered, but is flushed after each LogRecord is written.

version
1.18, 12/19/03
since
1.4

Fields Summary
private Socket
sock
private String
host
private int
port
private String
portProperty
Constructors Summary
public SocketHandler()
Create a SocketHandler, using only LogManager properties (or their defaults).

throws
IllegalArgumentException if the host or port are invalid or are not specified as LogManager properties.
throws
IOException if we are unable to connect to the target host and port.

	// We are going to use the logging defaults.
	sealed = false;
	configure();

	try {
            connect();
	} catch (IOException ix) {
	    System.err.println("SocketHandler: connect failed to " + host + ":" + port);
	    throw ix;
	}
        sealed = true;
    
public SocketHandler(String host, int port)
Construct a SocketHandler using a specified host and port. The SocketHandler is configured based on LogManager properties (or their default values) except that the given target host and port arguments are used. If the host argument is empty, but not null String then the localhost is used.

param
host target host.
param
port target port.
throws
IllegalArgumentException if the host or port are invalid.
throws
IOException if we are unable to connect to the target host and port.

	sealed = false;
	configure();
	sealed = true;
	this.port = port;
	this.host = host;
	connect();
    
Methods Summary
public synchronized voidclose()
Close this output stream.

exception
SecurityException if a security manager exists and if the caller does not have LoggingPermission("control").

	super.close();
	if (sock != null) {
	    try {
	        sock.close();
	    } catch (IOException ix) {
		// drop through.
	    }
 	}
	sock = null;
    
private voidconfigure()

        LogManager manager = LogManager.getLogManager();
	String cname = getClass().getName();

	setLevel(manager.getLevelProperty(cname +".level", Level.ALL));
	setFilter(manager.getFilterProperty(cname +".filter", null));
	setFormatter(manager.getFormatterProperty(cname +".formatter", new XMLFormatter()));
	try {
	    setEncoding(manager.getStringProperty(cname +".encoding", null));
	} catch (Exception ex) {
	    try {
	        setEncoding(null);
	    } catch (Exception ex2) {
		// doing a setEncoding with null should always work.
		// assert false;
	    }
	}
	port = manager.getIntProperty(cname + ".port", 0);
	host = manager.getStringProperty(cname + ".host", null);
    
private voidconnect()

	// Check the arguments are valid.
	if (port == 0) {
	    throw new IllegalArgumentException("Bad port: " + port);
	}
	if (host == null) {
	    throw new IllegalArgumentException("Null host name: " + host);
	}

	// Try to open a new socket.
	sock = new Socket(host, port);
	OutputStream out = sock.getOutputStream();
	BufferedOutputStream bout = new BufferedOutputStream(out);
	setOutputStream(bout);
    
public synchronized voidpublish(java.util.logging.LogRecord record)
Format and publish a LogRecord.

param
record description of the log event. A null record is silently ignored and is not published

	if (!isLoggable(record)) {
	    return;
	}
	super.publish(record);
	flush();