[ 
https://issues.apache.org/jira/browse/LOG4J2-291?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13712653#comment-13712653
 ] 

Michael Kloster commented on LOG4J2-291:
----------------------------------------

I pulled the latest snapshot today, built and can confirm the fix.

My test case uses a configuration nearly identical to the original bug report. 
To test the fail over, I set up two connection pools, one for my application, 
and one for the logger. I used a different user account for the logger than the 
application. After starting my application, the logs correctly appeared in the 
database and not in the failover file. Then, I dropped the logger user from the 
database (simulating a disruption in the ability to write logs to the 
database), the failover log file was then written. I also recreated the 
database user and saw the logs resume being written to the database.

Great work! Thanks.
                
> Failover appender doesn't fail over on JDBC appender error
> ----------------------------------------------------------
>
>                 Key: LOG4J2-291
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-291
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Appenders
>    Affects Versions: 2.0-beta7
>         Environment: Java version 1.6_045 and Oracle 11g 11.2.0.3.0 database 
> on 64-bit machine.  It's running within eclipse but I don't think that should 
> make a difference.
>            Reporter: Asaf Erlich
>            Assignee: Nick Williams
>            Priority: Minor
>             Fix For: 2.0-beta9
>
>
> When I configure a Failover appender using the jdbc appender as primary and 
> console/file as secondary if I get a database error It prints something to 
> System.err, but not to the file/console as expected.
> How to recreate:
> Make sure a jdbc appender works first.
> Prepare a configuration similar to the one below:
> <?xml version="1.0" encoding="UTF-8"?>
> <configuration status="WARN">
>       <appenders>
>               <Jdbc name="HubManagerDatabaseLog" tablename="HUB_MANAGER_LOG">
>                       <ConnectionFactory 
> class="com.somecompany.server.dal.DalCommon" 
> method="getDatabaseInstanceConnection"/>
>                       <Column name="LOG_DATE" isEventTimestamp="true" />
>                       <Column name="LOG_THREAD" pattern="%thread" />
>                       <Column name="LOG_LEVEL" pattern="%level" />
>                       <Column name="LOG_CLASS" pattern="%logger" />
>                       <Column name="LOG_METHOD" pattern="%method" />
>                       <Column name="LOG_MESSAGE" pattern="%message" />
>                       <Column name="LOG_EXCEPTION" pattern="%exception" />
>               </Jdbc>
>               <FastRollingFile name="HubManagerFileLog" 
> filename="logs/HubManager.log" filePattern="logs/HubManager-%d{COMPACT}.log">
>                       <PatternLayout pattern="%d [%thread] %-5level 
> %logger.%method - %message %exception%n" />
>                       <Policies>
>                               <SizeBasedTriggeringPolicy size="5MB"/>
>                       </Policies>
> <!--                  <DefaultRolloverStrategy max="50"/> -->
>               </FastRollingFile>
>               <Console name="Console" target="SYSTEM_OUT">
>                       <PatternLayout pattern="%d [%thread] %-5level 
> %logger.%method - %message %exception%n" />
>               </Console>
>               <Failover name="PrimaryDatabaseLoggingIfFailGoToFile" 
> primary="HubManagerDatabaseLog" suppressExceptions="false">
>                       <Failovers>
>                               <appender-ref ref="HubManagerFileLog"/>
>                       </Failovers>
>               </Failover>
>       </appenders>
>       
>       <loggers>
>               <logger name="com.exzac" level="DEBUG">
>                       <appender-ref 
> ref="PrimaryDatabaseLoggingIfFailGoToFile"/>
>                       <appender-ref ref="Console"/>
>               </logger>
>               <root level="DEBUG">
>               </root>
>       </loggers>
> </configuration>
> Run the following in a test java class that correctly has the above xml 
> configuration on the build path:
> import org.apache.logging.log4j.LogManager;
> import org.apache.logging.log4j.Logger;
> public class TestFailOverAppender {
>       private static final Logger LOGGER = 
> LogManager.getLogger(TestFailOverAppender.class);
>       public static void main(final String[] args) {
>               final String shortString = "FailOver Short message that should 
> go to database";
>               LOGGER.info(shortString);
>               final StringBuilder longString = new StringBuilder(shortString);
>               while (longString.length() < 4000) {
>                       longString.append(shortString);
>               }
>               LOGGER.info(longString.toString());
>               LOGGER.info("FailOver short string after message");
>       }
> }
> I have tried setting suppressExceptions as false/true.  I have tried 
> replacing the fileappender (which works normally) with just console instead 
> and saw the same result.  This may or may not be related to another JIRA 
> issue I found, LOG4J2-126.
> If there is simply something wrong with my configuration please let me know.  
> I tried following the documentation as much as possible.  Thank you.

--
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