Vina Martin created LOG4J2-1973:
-----------------------------------

             Summary: FailoverAppenders fail to start
                 Key: LOG4J2-1973
                 URL: https://issues.apache.org/jira/browse/LOG4J2-1973
             Project: Log4j 2
          Issue Type: Bug
          Components: Appenders
    Affects Versions: 2.8.2
            Reporter: Vina Martin
            Priority: Critical


I created a simple Hello World program with Log4j2 2.8.2 following the 
documentation.
{code}
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class HelloWorld {

    private static final Logger logger = LogManager.getLogger(HelloWorld.class);

    public static void main(final String... args) {
        logger.error("A test error- hello world!");
    }
}
{code}

with the following configuration in {{log4j2.xml}}
{code}
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} 
- %msg%n"/>
        </Console>
        <RollingFile name="RollingFile" fileName="logs/app.log" 
filePattern="logs/app-%d{MM-dd-yyyy}.log.gz"
                     ignoreExceptions="false">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
            </PatternLayout>
            <TimeBasedTriggeringPolicy />
        </RollingFile>
        <Failover name="Failover" primary="RollingFile">
            <Failovers>
                <AppenderRef ref="Console"/>
            </Failovers>
        </Failover>
    </Appenders>
    <Loggers>
        <Root level="error">
            <AppenderRef ref="Failover"/>
        </Root>
    </Loggers>
</Configuration>
{code}

I get this error when starting up my program: {{ERROR appender Failover has no 
parameter that matches element Failovers}}. I observed that the hello world 
message appeared in the log file and was properly appended each time I ran my 
hello world program. 

Then, I tried to simulate a scenario where a failover would happen to verify 
that the failover appender is not starting properly. I locked the log file to 
be read-only. After locking the file I ran the program and saw the following 
output:
{code}
2017-07-10 08:52:25,802 main ERROR RollingFileManager (logs/app.log) 
java.io.FileNotFoundException: logs/app.log (Permission denied) 
java.io.FileNotFoundException: logs/app.log (Permission denied)
        at java.io.FileOutputStream.open0(Native Method)
        at java.io.FileOutputStream.open(FileOutputStream.java:270)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:133)
        at 
org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:587)
        at 
org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:554)
        at 
org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:112)
        at 
org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114)
        at 
org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:155)
        at 
org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:131)
        at 
org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:60)
        at 
org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
        at 
org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:952)
        at 
org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:892)
        at 
org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:884)
        at 
org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:508)
        at 
org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:232)
        at 
org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:244)
        at 
org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:545)
        at 
org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:617)
        at 
org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:634)
        at 
org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:229)
        at 
org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:152)
        at 
org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
        at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:551)
        at HelloWorld.<clinit>(HelloWorld.java:10)

2017-07-10 08:52:25,810 main ERROR Unable to inject fields into builder class 
for plugin type class 
org.apache.logging.log4j.core.appender.RollingFileAppender, element 
RollingFile. java.lang.IllegalStateException: ManagerFactory 
[org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@6c3708b3]
 unable to create manager for [logs/app.log] with data 
[org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@6f1fba17[pattern=logs/app-%d{MM-dd-yyyy}.log.gz,
 append=true, bufferedIO=true, bufferSize=8192, 
policy=TimeBasedTriggeringPolicy(nextRolloverMillis=0, interval=1, 
modulate=false), strategy=DefaultRolloverStrategy(min=1, max=7, useMax=true), 
advertiseURI=null, layout=%d %p %c{1.} [%t] %m%n]]
        at 
org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:114)
        at 
org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114)
        at 
org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:155)
        at 
org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:131)
        at 
org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:60)
        at 
org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
        at 
org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:952)
        at 
org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:892)
        at 
org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:884)
        at 
org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:508)
        at 
org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:232)
        at 
org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:244)
        at 
org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:545)
        at 
org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:617)
        at 
org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:634)
        at 
org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:229)
        at 
org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:152)
        at 
org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
        at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:551)
        at HelloWorld.<clinit>(HelloWorld.java:10)

2017-07-10 08:52:25,813 main ERROR Unable to invoke factory method in class 
class org.apache.logging.log4j.core.appender.RollingFileAppender for element 
RollingFile. java.lang.IllegalStateException: No factory method found for class 
org.apache.logging.log4j.core.appender.RollingFileAppender
        at 
org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.findFactoryMethod(PluginBuilder.java:224)
        at 
org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:130)
        at 
org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:952)
        at 
org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:892)
        at 
org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:884)
        at 
org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:508)
        at 
org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:232)
        at 
org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:244)
        at 
org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:545)
        at 
org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:617)
        at 
org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:634)
        at 
org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:229)
        at 
org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:152)
        at 
org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
        at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:551)
        at HelloWorld.<clinit>(HelloWorld.java:10)

2017-07-10 08:52:25,815 main ERROR appender Failover has no parameter that 
matches element Failovers
2017-07-10 08:52:25,816 main ERROR Null object returned for RollingFile in 
Appenders.
2017-07-10 08:52:25,821 main ERROR Unable to locate primary Appender RollingFile
2017-07-10 08:52:25,896 main ERROR Attempted to append to non-started appender 
Failover
2017-07-10 08:52:25,897 main ERROR FailoverAppender Failover did not start 
successfully
{code}

It appears to me that it was about to use the failover appender, however it did 
not start properly due to the parsing error. 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to