You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-dev@logging.apache.org by "Marc Theisen (JIRA)" <ji...@apache.org> on 2016/08/24 15:32:20 UTC
[jira] [Updated] (LOG4NET-524) OnlyOnceErrorHandler might cause
StackOverflowError
[ 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)