[
https://issues.apache.org/jira/browse/LOG4J2-291?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13691209#comment-13691209
]
Thomas Neidhart commented on LOG4J2-291:
----------------------------------------
The JDBCAppender will by default suppress any exceptions and log the. In the
failover case this is not intended, so you need to set the "suppressExceptions"
parameter to "false", so the exception is correctly propagated to the
FailoverAppender and the event is correctly logged with the configured failover
appender.
Unfortunately, the JDBCAppender has a bug with this setting, the line 83 in the
current trunk should be changed to:
{noformat}
final boolean handleExceptions = suppressExceptions == null ||
Boolean.parseBoolean(suppressExceptions);
{noformat}
The naming is confusing, handleException=true actually has the same meaning as
suppressExceptions=true, as handleException means to handle the exception
internally.
> 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
> Priority: Minor
>
> 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]