public abstract class AbstractSocketAppender<E> extends AppenderBase<E> implements SocketConnector.ExceptionHandler
SocketAppender
implementations in other logback modules.| Modifier and Type | Field and Description |
|---|---|
private int |
acceptConnectionTimeout |
private java.net.InetAddress |
address |
private SocketConnector |
connector |
private static int |
DEFAULT_ACCEPT_CONNECTION_DELAY
Default timeout when waiting for the remote server to accept our
connection.
|
private static int |
DEFAULT_EVENT_DELAY_TIMEOUT
Default timeout for how long to wait when inserting an event into
the BlockingQueue.
|
static int |
DEFAULT_PORT
The default port number of remote logging server (4560).
|
static int |
DEFAULT_QUEUE_SIZE
Default size of the deque used to hold logging events that are destined
for the remote peer.
|
static int |
DEFAULT_RECONNECTION_DELAY
The default reconnection delay (30000 milliseconds or 30 seconds).
|
private java.util.concurrent.BlockingDeque<E> |
deque |
private Duration |
eventDelayLimit |
private ObjectWriterFactory |
objectWriterFactory |
private java.lang.String |
peerId |
private int |
port |
private QueueFactory |
queueFactory |
private int |
queueSize |
private Duration |
reconnectionDelay |
private java.lang.String |
remoteHost |
private java.net.Socket |
socket |
private java.util.concurrent.Future<?> |
task |
name, startedcontext| Modifier | Constructor and Description |
|---|---|
protected |
AbstractSocketAppender()
Constructs a new appender.
|
(package private) |
AbstractSocketAppender(QueueFactory queueFactory,
ObjectWriterFactory objectWriterFactory)
Constructs a new appender using the given
QueueFactory and ObjectWriterFactory. |
| Modifier and Type | Method and Description |
|---|---|
protected void |
append(E event) |
void |
connectionFailed(SocketConnector connector,
java.lang.Exception ex) |
private void |
connectSocketAndDispatchEvents() |
private SocketConnector |
createConnector(java.net.InetAddress address,
int port,
int initialDelay,
long retryDelay) |
private ObjectWriter |
createObjectWriterForSocket() |
private void |
dispatchEvents(ObjectWriter objectWriter) |
Duration |
getEventDelayLimit()
Returns the value of the eventDelayLimit property.
|
int |
getPort()
Returns value of the Port property.
|
protected abstract PreSerializationTransformer<E> |
getPST()
Get the pre-serialization transformer that will be used to transform
each event into a Serializable object before delivery to the remote
receiver.
|
int |
getQueueSize()
Returns the value of the queueSize property.
|
Duration |
getReconnectionDelay()
Returns value of the reconnectionDelay property.
|
java.lang.String |
getRemoteHost()
Returns value of the RemoteHost property.
|
protected javax.net.SocketFactory |
getSocketFactory()
Gets the default
SocketFactory for the platform. |
protected SocketConnector |
newConnector(java.net.InetAddress address,
int port,
long initialDelay,
long retryDelay)
Creates a new
SocketConnector. |
protected abstract void |
postProcessEvent(E event)
Post-processes an event before it is serialized for delivery to the
remote receiver.
|
(package private) void |
setAcceptConnectionTimeout(int acceptConnectionTimeout)
Sets the timeout that controls how long we'll wait for the remote
peer to accept our connection attempt.
|
void |
setEventDelayLimit(Duration eventDelayLimit)
The eventDelayLimit takes a non-negative integer representing the
number of milliseconds to allow the appender to block if the underlying
BlockingQueue is full.
|
void |
setPort(int port)
The Port property takes a positive integer representing the port
where the server is waiting for connections.
|
void |
setQueueSize(int queueSize)
The queueSize property takes a non-negative integer representing
the number of logging events to retain for delivery to the remote receiver.
|
void |
setReconnectionDelay(Duration delay)
The reconnectionDelay property takes a positive
Duration value
representing the time to wait between each failed connection attempt
to the server. |
void |
setRemoteHost(java.lang.String host)
The RemoteHost property takes the name of of the host where a corresponding server is running.
|
private boolean |
socketConnectionCouldBeEstablished() |
void |
start() |
void |
stop() |
private void |
tryReAddingEventToFrontOfQueue(E event) |
addFilter, clearAllFilters, doAppend, getCopyOfAttachedFiltersList, getFilterChainDecision, getName, isStarted, setName, toStringaddError, addError, addInfo, addInfo, addStatus, addWarn, addWarn, getContext, getDeclaredOrigin, getStatusManager, setContextclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitaddError, addError, addInfo, addInfo, addStatus, addWarn, addWarn, getContext, setContextpublic static final int DEFAULT_PORT
public static final int DEFAULT_RECONNECTION_DELAY
public static final int DEFAULT_QUEUE_SIZE
private static final int DEFAULT_ACCEPT_CONNECTION_DELAY
private static final int DEFAULT_EVENT_DELAY_TIMEOUT
private final ObjectWriterFactory objectWriterFactory
private final QueueFactory queueFactory
private java.lang.String remoteHost
private int port
private java.net.InetAddress address
private Duration reconnectionDelay
private int queueSize
private int acceptConnectionTimeout
private Duration eventDelayLimit
private java.util.concurrent.BlockingDeque<E> deque
private java.lang.String peerId
private SocketConnector connector
private java.util.concurrent.Future<?> task
private volatile java.net.Socket socket
protected AbstractSocketAppender()
AbstractSocketAppender(QueueFactory queueFactory, ObjectWriterFactory objectWriterFactory)
QueueFactory and ObjectWriterFactory.public void start()
start in interface LifeCyclestart in class AppenderBase<E>public void stop()
stop in interface LifeCyclestop in class AppenderBase<E>protected void append(E event)
append in class AppenderBase<E>private void connectSocketAndDispatchEvents()
private boolean socketConnectionCouldBeEstablished()
throws java.lang.InterruptedException
java.lang.InterruptedExceptionprivate ObjectWriter createObjectWriterForSocket() throws java.io.IOException
java.io.IOExceptionprivate SocketConnector createConnector(java.net.InetAddress address, int port, int initialDelay, long retryDelay)
private void dispatchEvents(ObjectWriter objectWriter) throws java.lang.InterruptedException, java.io.IOException
java.lang.InterruptedExceptionjava.io.IOExceptionprivate void tryReAddingEventToFrontOfQueue(E event)
public void connectionFailed(SocketConnector connector, java.lang.Exception ex)
connectionFailed in interface SocketConnector.ExceptionHandlerprotected SocketConnector newConnector(java.net.InetAddress address, int port, long initialDelay, long retryDelay)
SocketConnector.
The default implementation creates an instance of DefaultSocketConnector.
A subclass may override to provide a different SocketConnector
implementation.
address - target remote addressport - target remote portinitialDelay - delay before the first connection attemptretryDelay - delay before a reconnection attemptprotected javax.net.SocketFactory getSocketFactory()
SocketFactory for the platform.
Subclasses may override to provide a custom socket factory.
protected abstract void postProcessEvent(E event)
event - the event to post-processprotected abstract PreSerializationTransformer<E> getPST()
public void setRemoteHost(java.lang.String host)
public java.lang.String getRemoteHost()
public void setPort(int port)
public int getPort()
public void setReconnectionDelay(Duration delay)
Duration value
representing the time to wait between each failed connection attempt
to the server. The default value of this option is to 30 seconds.
Setting this option to zero turns off reconnection capability.
public Duration getReconnectionDelay()
public void setQueueSize(int queueSize)
append(Object) method returns immediately after enqueing the
event, assuming that there is space available in the deque. Using a
non-zero deque length can improve performance by eliminating delays
caused by transient network delays.queueSize - the deque size to set.public int getQueueSize()
public void setEventDelayLimit(Duration eventDelayLimit)
eventDelayLimit - the event delay limitpublic Duration getEventDelayLimit()
void setAcceptConnectionTimeout(int acceptConnectionTimeout)
This property is configurable primarily to support instrumentation for unit testing.
acceptConnectionTimeout - timeout value in milliseconds