You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Nick Williams (JIRA)" <ji...@apache.org> on 2013/07/18 00:40:50 UTC

[jira] [Resolved] (LOG4J2-291) Failover appender doesn't fail over on JDBC appender error

     [ https://issues.apache.org/jira/browse/LOG4J2-291?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Nick Williams resolved LOG4J2-291.
----------------------------------

    Resolution: Fixed

This is fixed. Please verify with latest (or wait until the next release) and then close.
                
> 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: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org