https://issues.apache.org/bugzilla/show_bug.cgi?id=56646

            Bug ID: 56646
           Summary: Appender causes StackOverflowError if final existing
                    path element is not writable
           Product: Log4j
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: critical
          Priority: P2
         Component: Appender
          Assignee: log4j-dev@logging.apache.org
          Reporter: agi20...@gmail.com

In log4j 1.2.16, if the final existing path element in the properties key
log4J.appender.<FILE>.File is not writable, a StackOverflowError will occur.

Begin projectLog4j.properties file
Note: trace was only set while trying to track down the problem
-----------------------------------
# Default log level
log4j.rootCategory=trace, FILE

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%m%n

################################################
# You can set custom log levels per-package here
################################################

# Apache Commons tend to make a lot of noise which can clutter the log.
log4j.logger.org.apache=WARN

# Your custom classes
log4j.logger.com.my.company.package1=trace,FILE
log4j.logger.com.my.company.package2=trace,FILE
log4j.additivity.com.my.company.package2=false
log4j.logger.com.my.co.package1=trace,FILE
log4j.additivity.my.co.package1=false

log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=<LOG_FILE_PATH>
log4j.appender.FILE.MaxFileSize=50MB
log4j.appender.FILE.MaxBackupIndex=3
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%-5p %d [%t] %c: %m%n

---------------------------------------------
End projectLog4j.properties file:

Examples:

1.
Setup: 
<LOG_FILE_PATH> = /tmp/can/make/log/here.log

/tmp exists and has normal permissions of 7777.  None of the other directories
or the log file (here.log) exist.

Result: 
log file will be created and written to with no problems.


2.
Setup:
<LOG_FILE_PATH> = /tmp/root/SOE.log

/tmp exists and has normal permissions of 7777.  /tmp/root exists, is owned by
root:root, and has permissions of 755.  SOE.log does not exist.

Result: 
java.lang.StackOverflowError
    at java.io.PrintStream.write(PrintStream.java:523)
    at java.io.PrintStream.print(PrintStream.java:669)
    at java.io.PrintStream.println(PrintStream.java:806)
    at org.apache.log4j.helpers.LogLog.error(LogLog.java:129)
    at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:232)
    at
org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
    at org.apache.log4j.Category.callAppenders(Category.java:206)
    at org.apache.log4j.Category.forcedLog(Category.java:391)
    at org.apache.log4j.Category.log(Category.java:838)
    at
org.apache.log4j.contribs.LoggingOutputStream.flush(LoggingOutputStream.java:199)
    at java.io.PrintStream.write(PrintStream.java:482)
    at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
    at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:282)
    at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)
    at java.io.OutputStreamWriter.write(OutputStreamWriter.java:207)
    at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:129)
    at java.io.BufferedWriter.write(BufferedWriter.java:230)
    at java.io.Writer.write(Writer.java:157)

3.
Setup:
<LOG_FILE_PATH> = /tmp/root/SOE.log

/tmp exists and has normal permissions of 7777.  /tmp/root exists, is owned by
root:root, and has permissions of 755.  SOE.log exists and has permissions of
666

Result: 
Log is written to with no problems.

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-dev-h...@logging.apache.org

Reply via email to