[
https://issues.apache.org/jira/browse/LOG4J2-3351?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17485417#comment-17485417
]
Gary D. Gregory edited comment on LOG4J2-3351 at 2/1/22, 7:04 PM:
------------------------------------------------------------------
Please run your use case with DEBUG on for Log4j itself, for example:
{code:xml}
<Configuration status="debug">
...
{code}
Based on:
{code:java}
insert into RSMS.SYS_LOG
(APPTIER,ACTIVITY,LEVELS,STACKTRACE,MESSAGE,LOG_ID,USER_ID,TIMESTAMP) values
(?,?,?,?,?,XYZ.nextVal,?,?)
{code}
It looks LOG_ID should be a sequence. Is it? What is your table DDL? Shouldn't
{{XYZ.nextVal}} be {{LOG_ID.nextVal}} in your configuration file?
was (Author: garydgregory):
Please run your use case with DEBUG on for Log4j itself, for example:
{code:xml}
<Configuration status="debug">
...
{code}
Based on:
{code:java}
insert into RSMS.SYS_LOG
(APPTIER,ACTIVITY,LEVELS,STACKTRACE,MESSAGE,LOG_ID,USER_ID,TIMESTAMP) values
(?,?,?,?,?,XYZ.nextVal,?,?)
{code}
It looks LOG_ID should be a sequence. Is it? What is your table DDL?
> JDBC Appender not working for consecutive log events with OracleDB
> ------------------------------------------------------------------
>
> Key: LOG4J2-3351
> URL: https://issues.apache.org/jira/browse/LOG4J2-3351
> Project: Log4j 2
> Issue Type: Bug
> Components: Appenders, JDBC
> Affects Versions: 2.17.1
> Environment: * OS -Windows 64 bit
> * IDE - Eclipse
> * Database - Oracle 19c
> * log4j version 2.17.1
> Reporter: Rudranshu
> Priority: Major
> Fix For: 2.17.1
>
>
> I am trying to persist logs in Oracle DB in my sample application but my
> second log event is throwing an exception
> 2022-01-19 17:48:23,022 main ERROR Unable to write to database
> [JdbcManager\{name=SYS_LOG_DB, bufferSize=0, tableName=XYZ, columnConfigs=[{
> name=APPTIER, layout=%X{appTier}, literal=null, timestamp=false }, \{
> name=ACTIVITY, layout=%X{activity}, literal=null, timestamp=false }, \{
> name=LEVELS, layout=%p, literal=null, timestamp=false }, \{ name=STACKTRACE,
> layout=%X{stackTrace}, literal=null, timestamp=false }, \{ name=MESSAGE,
> layout=%m, literal=null, timestamp=false }, \{ name=LOG_ID, layout=null,
> literal=XYZ.nextVal, timestamp=false }, \{ name=USER_ID, layout=%X{userId},
> literal=null, timestamp=false }, \{ name=TIMESTAMP, layout=null,
> literal=null, timestamp=true }], columnMappings=[]}] for appender
> [SYS_LOG_DB].
> org.apache.logging.log4j.core.appender.AppenderLoggingException: Error
> writing to JDBC Manager 'JdbcManager\{name=SYS_LOG_DB, bufferSize=0,
> tableName=XYZ, columnConfigs=[{ name=APPTIER, layout=%X{appTier},
> literal=null, timestamp=false }, \{ name=ACTIVITY, layout=%X{activity},
> literal=null, timestamp=false }, \{ name=LEVELS, layout=%p, literal=null,
> timestamp=false }, \{ name=STACKTRACE, layout=%X{stackTrace}, literal=null,
> timestamp=false }, \{ name=MESSAGE, layout=%m, literal=null, timestamp=false
> }, \{ name=LOG_ID, layout=null, literal=RSMS.SYS_LOG_SEQ.nextVal,
> timestamp=false }, \{ name=USER_ID, layout=%X{userId}, literal=null,
> timestamp=false }, \{ name=TIMESTAMP, layout=null, literal=null,
> timestamp=true }], columnMappings=[]}': JDBC connection not available
> [columnConfigs=[\{ name=APPTIER, layout=%X{appTier}, literal=null,
> timestamp=false }, \{ name=ACTIVITY, layout=%X{activity}, literal=null,
> timestamp=false }, \{ name=LEVELS, layout=%p, literal=null, timestamp=false
> }, \{ name=STACKTRACE, layout=%X{stackTrace}, literal=null, timestamp=false
> }, \{ name=MESSAGE, layout=%m, literal=null, timestamp=false }, \{
> name=USER_ID, layout=%X{userId}, literal=null, timestamp=false }, \{
> name=TIMESTAMP, layout=null, literal=null, timestamp=true }],
> sqlStatement=insert into RSMS.SYS_LOG
> (APPTIER,ACTIVITY,LEVELS,STACKTRACE,MESSAGE,LOG_ID,USER_ID,TIMESTAMP) values
> (?,?,?,?,?,XYZ.nextVal,?,?), factoryData=FactoryData
> [connectionSource=factory\{ public static java.sql.Connection
> appender.ConnectionFactory.getDatabaseConnection() }, tableName=RSMS.SYS_LOG,
> columnConfigs=[\{ name=APPTIER, layout=%X{appTier}, literal=null,
> timestamp=false }, \{ name=ACTIVITY, layout=%X{activity}, literal=null,
> timestamp=false }, \{ name=LEVELS, layout=%p, literal=null, timestamp=false
> }, \{ name=STACKTRACE, layout=%X{stackTrace}, literal=null, timestamp=false
> }, \{ name=MESSAGE, layout=%m, literal=null, timestamp=false }, \{
> name=LOG_ID, layout=null, literal=XYZ.nextVal, timestamp=false }, \{
> name=USER_ID, layout=%X{userId}, literal=null, timestamp=false }, \{
> name=TIMESTAMP, layout=null, literal=null, timestamp=true }],
> columnMappings=[], immediateFail=false, retry=true,
> reconnectIntervalMillis=5000, truncateStrings=true], connection=null,
> statement=null, reconnector=Reconnector
> [latch=java.util.concurrent.CountDownLatch@b83a9be[Count = 0],
> shutdown=false], isBatchSupported=true, columnMetaData=null]
> at
> org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager.checkConnection(JdbcDatabaseManager.java:507)
> at
> org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager.connectAndStart(JdbcDatabaseManager.java:610)
> at
> org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager.writeThrough(JdbcDatabaseManager.java:888)
> at
> org.apache.logging.log4j.core.appender.db.AbstractDatabaseManager.write(AbstractDatabaseManager.java:264)
> at
> org.apache.logging.log4j.core.appender.db.AbstractDatabaseAppender.append(AbstractDatabaseAppender.java:110)
> at
> org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:161)
> at
> org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:134)
> at
> org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:125)
> at
> org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:89)
> at
> org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:542)
> at
> org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:500)
> at
> org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:483)
> at
> org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417)
> at
> org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
> at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
> at
> org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2205)
> at
> org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2159)
> at
> org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2142)
> at
> org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2017)
> at
> org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1983)
> at
> org.apache.logging.log4j.spi.AbstractLogger.log(AbstractLogger.java:1652)
> at LoggerHelper.main(LoggerHelper.java:25)
> 2022-01-19 17:48:23,033 main ERROR An exception occurred processing Appender
> SYS_LOG_DB org.apache.logging.log4j.core.appender.AppenderLoggingException:
> Error writing to JDBC Manager 'JdbcManager\{name=SYS_LOG_DB, bufferSize=0,
> tableName=XYZ, columnConfigs=[{ name=APPTIER, layout=%X{appTier},
> literal=null, timestamp=false }, \{ name=ACTIVITY, layout=%X{activity},
> literal=null, timestamp=false }, \{ name=LEVELS, layout=%p, literal=null,
> timestamp=false }, \{ name=STACKTRACE, layout=%X{stackTrace}, literal=null,
> timestamp=false }, \{ name=MESSAGE, layout=%m, literal=null, timestamp=false
> }, \{ name=LOG_ID, layout=null, literal=XYZ.nextVal, timestamp=false }, \{
> name=USER_ID, layout=%X{userId}, literal=null, timestamp=false }, \{
> name=TIMESTAMP, layout=null, literal=null, timestamp=true }],
> columnMappings=[]}': JDBC connection not available [columnConfigs=[\{
> name=APPTIER, layout=%X{appTier}, literal=null, timestamp=false }, \{
> name=ACTIVITY, layout=%X{activity}, literal=null, timestamp=false }, \{
> name=LEVELS, layout=%p, literal=null, timestamp=false }, \{ name=STACKTRACE,
> layout=%X{stackTrace}, literal=null, timestamp=false }, \{ name=MESSAGE,
> layout=%m, literal=null, timestamp=false }, \{ name=USER_ID,
> layout=%X{userId}, literal=null, timestamp=false }, \{ name=TIMESTAMP,
> layout=null, literal=null, timestamp=true }], sqlStatement=insert into
> RSMS.SYS_LOG
> (APPTIER,ACTIVITY,LEVELS,STACKTRACE,MESSAGE,LOG_ID,USER_ID,TIMESTAMP) values
> (?,?,?,?,?,XYZ.nextVal,?,?), factoryData=FactoryData
> [connectionSource=factory\{ public static java.sql.Connection
> appender.ConnectionFactory.getDatabaseConnection() }, tableName=XYZ,
> columnConfigs=[\{ name=APPTIER, layout=%X{appTier}, literal=null,
> timestamp=false }, \{ name=ACTIVITY, layout=%X{activity}, literal=null,
> timestamp=false }, \{ name=LEVELS, layout=%p, literal=null, timestamp=false
> }, \{ name=STACKTRACE, layout=%X{stackTrace}, literal=null, timestamp=false
> }, \{ name=MESSAGE, layout=%m, literal=null, timestamp=false }, \{
> name=LOG_ID, layout=null, literal=XYZ.nextVal, timestamp=false }, \{
> name=USER_ID, layout=%X{userId}, literal=null, timestamp=false }, \{
> name=TIMESTAMP, layout=null, literal=null, timestamp=true }],
> columnMappings=[], immediateFail=false, retry=true,
> reconnectIntervalMillis=5000, truncateStrings=true], connection=null,
> statement=null, reconnector=Reconnector
> [latch=java.util.concurrent.CountDownLatch@b83a9be[Count = 0],
> shutdown=false], isBatchSupported=true, columnMetaData=null]
> at
> org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager.checkConnection(JdbcDatabaseManager.java:507)
> at
> org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager.connectAndStart(JdbcDatabaseManager.java:610)
> at
> org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager.writeThrough(JdbcDatabaseManager.java:888)
> at
> org.apache.logging.log4j.core.appender.db.AbstractDatabaseManager.write(AbstractDatabaseManager.java:264)
> at
> org.apache.logging.log4j.core.appender.db.AbstractDatabaseAppender.append(AbstractDatabaseAppender.java:110)
> at
> org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:161)
> at
> org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:134)
> at
> org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:125)
> at
> org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:89)
> at
> org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:542)
> at
> org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:500)
> at
> org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:483)
> at
> org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417)
> at
> org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
> at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
> at
> org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2205)
> at
> org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2159)
> at
> org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2142)
> at
> org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2017)
> at
> org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1983)
> at
> org.apache.logging.log4j.spi.AbstractLogger.log(AbstractLogger.java:1652)
> at LoggerHelper.main(LoggerHelper.java:25)
>
--
This message was sent by Atlassian Jira
(v8.20.1#820001)