[ 
https://issues.apache.org/jira/browse/LOG4NET-524?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Marc Theisen updated LOG4NET-524:
---------------------------------
    Description: 
I am referring to the solution in 
https://bz.apache.org/bugzilla/show_bug.cgi?id=42151.

I am suggesting another approach instead of placing a bad hack into 
com.{{csfb.fao.carat.util.file.LoggingOutputStream}}.

Why not change the {{error}} method of class {{OnlyOnceErrorHandler}} from

{code}
public void error(String message, Exception e, int errorCode, LoggingEvent 
event)
{
  if (e instanceof InterruptedIOException || e instanceof InterruptedException)
  {
    Thread.currentThread().interrupt();
  }
  if(firstTime)
  {
    LogLog.error(message, e);
    firstTime = false;           // yikes, too late if stdout/stderr has been
  }                              // redirected
}
{code}

to

{code}
public void error(String message, Exception e, int errorCode, LoggingEvent 
event)
{
  if (e instanceof InterruptedIOException || e instanceof InterruptedException)
  {
    Thread.currentThread().interrupt();
  }
  if(firstTime)
  {
    firstTime = false;
    LogLog.error(message, e);
  }
}
{code}


  was:
I am referring to the solution in 
https://bz.apache.org/bugzilla/show_bug.cgi?id=42151.

I am suggesting another approach instead of placing a bad hack into 
com.csfb.fao.carat.util.file.LoggingOutputStream.

Why not change the error() method of class OnlyOnceErrorHandler from

public void error(String message, Exception e, int errorCode, LoggingEvent 
event) {
  if (e instanceof InterruptedIOException || e instanceof InterruptedException)
  {
    Thread.currentThread().interrupt();
  }
  if(firstTime)
  {
    LogLog.error(message, e);
    firstTime = false;           // yikes, too late if stdout/stderr has been
  }                              // redirected
}

to

public void error(String message, Exception e, int errorCode, LoggingEvent 
event) {
  if (e instanceof InterruptedIOException || e instanceof InterruptedException)
  {
    Thread.currentThread().interrupt();
  }
  if(firstTime)
  {
    firstTime = false;
    LogLog.error(message, e);
  }
}



> OnlyOnceErrorHandler might cause StackOverflowError
> ---------------------------------------------------
>
>                 Key: LOG4NET-524
>                 URL: https://issues.apache.org/jira/browse/LOG4NET-524
>             Project: Log4net
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.2.15
>            Reporter: Marc Theisen
>
> I am referring to the solution in 
> https://bz.apache.org/bugzilla/show_bug.cgi?id=42151.
> I am suggesting another approach instead of placing a bad hack into 
> com.{{csfb.fao.carat.util.file.LoggingOutputStream}}.
> Why not change the {{error}} method of class {{OnlyOnceErrorHandler}} from
> {code}
> public void error(String message, Exception e, int errorCode, LoggingEvent 
> event)
> {
>   if (e instanceof InterruptedIOException || e instanceof 
> InterruptedException)
>   {
>     Thread.currentThread().interrupt();
>   }
>   if(firstTime)
>   {
>     LogLog.error(message, e);
>     firstTime = false;           // yikes, too late if stdout/stderr has been
>   }                              // redirected
> }
> {code}
> to
> {code}
> public void error(String message, Exception e, int errorCode, LoggingEvent 
> event)
> {
>   if (e instanceof InterruptedIOException || e instanceof 
> InterruptedException)
>   {
>     Thread.currentThread().interrupt();
>   }
>   if(firstTime)
>   {
>     firstTime = false;
>     LogLog.error(message, e);
>   }
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to