T
- The type of the Record
instances managed by the
Logger
.org.refcodes.component.Destroyable
, org.refcodes.logger.LogDecorator
, org.refcodes.logger.Logger<T>
, org.refcodes.logger.LoggerAccessor.LoggerMutator<org.refcodes.logger.Logger<T>>
public class AsyncLogger<T> extends Object implements org.refcodes.logger.Logger<T>, org.refcodes.component.Destroyable, org.refcodes.logger.LoggerAccessor.LoggerMutator<org.refcodes.logger.Logger<T>>
AsyncLogger
uses the asynchronous patter to forward
Logger
functionality to an encapsulated Logger
instance.
Internally a log line queue (holding Record
instances to be logged)
as well a daemon thread (taking elements from the log line queue) are used to
decouple the encapsulated Logger
instance from the asynchronous
AsyncLogger
.
A given number of retries are approached in case there is an overflow of the
log line queue; this happens when the queue is full the encapsulated
Logger
instance cannot take the next Record
in time.
To avoid a building up of the log line queue, eventually causing an out of
memory, log lines not being taken into the log line queue within the given
number of retries, them log lines are dismissed. In such a case a warning
with a LogPriority.WARN
is printed out.
Constructor | Description |
---|---|
AsyncLogger() |
Instantiates a new async logger.
|
AsyncLogger(ExecutorService aExecutorService,
org.refcodes.logger.Logger<T> aLogger) |
Constructs an
AsyncLogger from the provided Logger
instance. |
AsyncLogger(org.refcodes.logger.Logger<T> aLogger) |
Modifier and Type | Method | Description |
---|---|---|
void |
destroy() |
|
void |
log(org.refcodes.tabular.Record<? extends T> aRecord) |
|
void |
printSeparator() |
|
void |
setLogger(org.refcodes.logger.Logger<T> aLogger) |
public AsyncLogger()
public AsyncLogger(org.refcodes.logger.Logger<T> aLogger)
aLogger
- The a logger which is to be enriched with asynchronous
functionality.public AsyncLogger(ExecutorService aExecutorService, org.refcodes.logger.Logger<T> aLogger)
AsyncLogger
from the provided Logger
instance.aExecutorService
- The ExecutorService
to use when creating
threads.aLogger
- The Logger
instances to be used for the
AsyncLogger
.public void log(org.refcodes.tabular.Record<? extends T> aRecord) throws org.refcodes.logger.IllegalRecordRuntimeException, org.refcodes.logger.UnexpectedLogRuntimeException
log
in interface org.refcodes.logger.Logger<T>
org.refcodes.logger.IllegalRecordRuntimeException
org.refcodes.logger.UnexpectedLogRuntimeException
public void printSeparator()
printSeparator
in interface org.refcodes.logger.LogDecorator
public void destroy()
destroy
in interface org.refcodes.component.Destroyable
Copyright © 2021. All rights reserved.