public void run() {
//Category cat = Category.getInstance(Dispatcher.class.getName());
LoggingEvent event;
while (true) {
synchronized (bf) {
if (bf.length() == 0) {
// Exit loop if interrupted but only if the the buffer is empty.
if (interrupted) {
//cat.info("Exiting.");
break;
}
try {
//LogLog.debug("Waiting for new event to dispatch.");
bf.wait();
} catch (InterruptedException e) {
break;
}
}
event = bf.get();
if (bf.wasFull()) {
//LogLog.debug("Notifying AsyncAppender about freed space.");
bf.notify();
}
}
// synchronized
synchronized (container.aai) {
if ((aai != null) && (event != null)) {
aai.appendLoopOnAppenders(event);
}
}
}
// while
// close and remove all appenders
aai.removeAllAppenders();
} Deprecated! |