[jboss-svn-commits] JBoss Common SVN: r3333 - jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/handlers.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Jul 5 14:38:02 EDT 2009
Author: david.lloyd at jboss.com
Date: 2009-07-05 14:38:02 -0400 (Sun, 05 Jul 2009)
New Revision: 3333
Modified:
jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/handlers/AsyncHandler.java
Log:
More options for async appender
Modified: jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/handlers/AsyncHandler.java
===================================================================
--- jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/handlers/AsyncHandler.java 2009-07-04 20:13:07 UTC (rev 3332)
+++ jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/handlers/AsyncHandler.java 2009-07-05 18:38:02 UTC (rev 3333)
@@ -40,6 +40,7 @@
private final ThreadFactory threadFactory;
private final Queue<ExtLogRecord> recordQueue;
private final AsyncThread asyncThread = new AsyncThread();
+ private volatile OverflowAction overflowAction = OverflowAction.BLOCK;
private boolean closed;
private boolean taskRunning;
@@ -82,6 +83,28 @@
this(DEFAULT_QUEUE_LENGTH);
}
+ /**
+ * Get the overflow action.
+ *
+ * @return the overflow action
+ */
+ public OverflowAction getOverflowAction() {
+ return overflowAction;
+ }
+
+ /**
+ * Set the overflow action.
+ *
+ * @param overflowAction the overflow action
+ */
+ public void setOverflowAction(final OverflowAction overflowAction) {
+ if (overflowAction == null) {
+ throw new NullPointerException("overflowAction is null");
+ }
+ checkAccess();
+ this.overflowAction = overflowAction;
+ }
+
/** {@inheritDoc} */
public void publish(final ExtLogRecord record) {
final Queue<ExtLogRecord> recordQueue = this.recordQueue;
@@ -96,6 +119,9 @@
startTaskIfNotRunning();
while (! recordQueue.offer(record)) {
try {
+ if (overflowAction == OverflowAction.DISCARD) {
+ return;
+ }
recordQueue.wait();
} catch (InterruptedException e) {
intr = true;
@@ -188,4 +214,9 @@
}
}
}
+
+ public enum OverflowAction {
+ BLOCK,
+ DISCARD,
+ }
}
More information about the jboss-svn-commits
mailing list