Tom Wieczorek created LOG4J2-295:
------------------------------------

             Summary: BufferOverflowException in FastFileManager when logging 
huge messages
                 Key: LOG4J2-295
                 URL: https://issues.apache.org/jira/browse/LOG4J2-295
             Project: Log4j 2
          Issue Type: Bug
          Components: Appenders
    Affects Versions: 2.0-beta7
            Reporter: Tom Wieczorek


When logging messages larger than {{FastFileManager.DEFAULT_BUFFER_SIZE}} with 
appenders using {{FastFileManager}}, the logging fails internally with a 
{{BufferOverflowException}} and no log output is produced by these appenders.

----
*Test case*

{noformat}
import java.util.Arrays;

import org.apache.logging.log4j.LogManager;

public class TestBufferOverflow {

  public static void main(String[] args) {

    final String longMessage;
    {
      char[] chars = new char[384 * 1024];
      Arrays.fill(chars, 'x');
      longMessage = new String(chars);
    }

    LogManager.getLogger("TestBufferOverflow").info(longMessage);
  }
}
{noformat}

----
*log4j2.xml*

{noformat}
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appenders>
    <FastFile name="file" fileName="test.log" suppressExceptions="false">
      <PatternLayout>
        <pattern>%m%n</pattern>
      </PatternLayout>
    </FastFile>
  </appenders>
  <loggers>
    <root level="info">
      <appender-ref ref="file" />
    </root>
  </loggers>
</configuration>
{noformat}

----
*Exception thrown*

{noformat}
Exception in thread "main" 
org.apache.logging.log4j.core.appender.AppenderRuntimeException: An exception 
occurred processing Appender file
        at 
org.apache.logging.log4j.core.appender.DefaultErrorHandler.error(DefaultErrorHandler.java:73)
        at 
org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:104)
        at 
org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:424)
        at 
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:405)
        at 
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:366)
        at org.apache.logging.log4j.core.Logger.log(Logger.java:110)
        at 
org.apache.logging.log4j.spi.AbstractLogger.info(AbstractLogger.java:1010)
        at TestBufferOverflow.main(TestBufferOverflow.java:16)
Caused by: java.nio.BufferOverflowException
        at java.nio.HeapByteBuffer.put(HeapByteBuffer.java:165)
        at 
org.apache.logging.log4j.core.appender.FastFileManager.write(FastFileManager.java:89)
        at 
org.apache.logging.log4j.core.appender.OutputStreamManager.write(OutputStreamManager.java:129)
        at 
org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:113)
        at 
org.apache.logging.log4j.core.appender.FastFileAppender.append(FastFileAppender.java:84)
        at 
org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:102)
        ... 6 more
{noformat}


--
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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to