You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Ralph Goers (JIRA)" <ji...@apache.org> on 2013/03/31 10:15:15 UTC
[jira] [Resolved] (LOG4J2-189) AsynchAppender: "blocking" parameter
doesn't work
[ https://issues.apache.org/jira/browse/LOG4J2-189?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ralph Goers resolved LOG4J2-189.
--------------------------------
Resolution: Fixed
Fix Version/s: 2.0-beta5
Assignee: Ralph Goers
Fixed in revision 1462895. Please verify and close.
> AsynchAppender: "blocking" parameter doesn't work
> -------------------------------------------------
>
> Key: LOG4J2-189
> URL: https://issues.apache.org/jira/browse/LOG4J2-189
> Project: Log4j 2
> Issue Type: Bug
> Components: Appenders
> Affects Versions: 2.0-beta4
> Reporter: Werner
> Assignee: Ralph Goers
> Fix For: 2.0-beta5
>
>
> AsynchAppender parameter:
> blocking=false ==> LogEvents are never distributed to other appenders
> blocking=true ==> the appender don't blocks if the queue is full
> proposal for solution:
> AsynchAppender.java
> public void append(final LogEvent event) {
> if (!isStarted()) {
> throw new IllegalStateException("AsynchAppender " + getName() + " is not active");
> }
> if (event instanceof Log4jLogEvent) {
>
> // if (blocking && queue.remainingCapacity() > 0) {
> // try {
> // queue.add(Log4jLogEvent.serialize((Log4jLogEvent) event));
> // return;
> // } catch (final IllegalStateException ex) {
> // error("Appender " + getName() + " is unable to write primary appenders. queue is full");
> // }
> // }
> // if (errorAppender != null) {
> // if (!blocking) {
> // error("Appender " + getName() + " is unable to write primary appenders. queue is full");
> // }
> // errorAppender.callAppender(event);
> // }
> boolean appendSuccessful = false;
> if (blocking){
> try {
> queue.put(Log4jLogEvent.serialize((Log4jLogEvent) event)); // wait for free slots in the queue
> appendSuccessful = true;
> } catch (InterruptedException e) {
> LOGGER.warn("Interrupted while waiting for a free slots in the LogEvent-queue at the AsynchAppender {}", getName());
> }
> }else{
> appendSuccessful = queue.offer(Log4jLogEvent.serialize((Log4jLogEvent) event));
> if (!appendSuccessful){
> error("Appender " + getName() + " is unable to write primary appenders. queue is full");
> }
> }
> if ((!appendSuccessful) && (errorAppender != null)){
> errorAppender.callAppender(event);
> }
> }
> }
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org