[
https://issues.apache.org/jira/browse/LOG4J2-3199?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17476838#comment-17476838
]
Gary D. Gregory commented on LOG4J2-3199:
-----------------------------------------
Hi [~jacob2221]
Can you try this with 2.17.1?
TY.
> Log4j2 - Strange behavior with Async Logger + JDBC Appender + Oracle DB
> -----------------------------------------------------------------------
>
> Key: LOG4J2-3199
> URL: https://issues.apache.org/jira/browse/LOG4J2-3199
> Project: Log4j 2
> Issue Type: Question
> Affects Versions: 2.9.1
> Reporter: Jacob Thomas
> Priority: Minor
>
> Hi,
> Below is the tech stack being used -
> Log4j2 - 2.9.1
> Spring MVC - 4.2.8.RELEASE
> Oracle JDK - 1.8
> Weblogic - 12.2
> Oracle RDBMS - 19c
> We have a Spring MVC web application deployed on weblogic 12.2 connecting to
> Oracle 19c via weblogic connection pooling. The application is using Async
> logger with JDBC Appender having configuration similar to below -
> _<JDBC name="app-api-db" tableName="API_AUDIT_LOG">_
> _<DataSource jndiName="appdb"></DataSource>_
> _<Column name="MESSAGE_ID" pattern="%X\{uniqueId}" />_
> _<Column name="API_ID" pattern="%X\{apiId}" />_
> _<Column name="MESSAGE_TYPE" pattern="%X\{msgType}" />_
> _<Column name="REQUEST" pattern="%X\{reqMsg}" isClob="true" />_
> _<Column name="RESPONSE" pattern="%X\{resMsg}" isClob="true" />_
> _<Column name="STATUS_CODE" pattern="%X\{statusCd}" />_
> _<Column name="STATUS_MSG" pattern="%X\{statusMsg}" />_
> _<Column name="LOG_TIMESTAMP" isEventTimestamp="true" />_
> _</JDBC>_
> _<AsyncLogger name="com.logger.ApiAuditLogger" level="debug"
> additivity="false" >_
> _<AppenderRef ref="app-api-db" />_
> _</AsyncLogger>_
>
> It is observed that when log4j2 JDBC appender uses the same connection pool
> as the web application ("appdb"), then we can see multiple DB sessions
> (v$session & v$sql) executing the "INSERT INTO API_AUDIT_LOG......" sql.
> But when we create and use a new connection pool exclusively for "log4j"
> (separate from the one used by web application), there is always only one DB
> session which is executing the "INSERT INTO API_AUDIT_LOG......" sql. This is
> irrespective of the number of connections in the pool.
> As in the second scenario, there is only one connection executing the INSERT
> statement and there are 2 CLOB columns involved, usage of Oracle DB TEMP
> space used by this DB session keeps on increasing till it uses up all the
> available TEMP space. However in the first scenario where log4j2 is sharing
> connection pool with application, there always seem to be multiple DB
> sessions issuing the INSERT sql and hence the TEMP space usage is much more
> controlled.
>
> Could you please help advise why this may be happening? Based on this is it
> safe to conclude that log4j2 should not be using a separate connection pool
> of its own; rather it should always use the same pool as the main app?
> Given this behavior, can this issue of TEMP space exhaustion happen even in
> case both app and log4j2 use the same pool? For eg: Say there is a
> substantial increase in incoming requests to app but the connection pool is
> not increased accordingly. Then there could be cases where the same sessions
> are used by log4j2 more often than before to run INSERT statement because of
> increased load.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)