SocketHandlerpublic 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. |
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).
// 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.
sealed = false;
configure();
sealed = true;
this.port = port;
this.host = host;
connect();
|
Methods Summary |
---|
public synchronized void | close()Close this output stream.
super.close();
if (sock != null) {
try {
sock.close();
} catch (IOException ix) {
// drop through.
}
}
sock = null;
| private void | configure()
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 void | connect()
// 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 void | publish(java.util.logging.LogRecord record)Format and publish a LogRecord.
if (!isLoggable(record)) {
return;
}
super.publish(record);
flush();
|
|