Uploaded image for project: 'Log4j 2'
  1. Log4j 2
  2. LOG4J2-424

JDBCAppender: Add support for data types other then String

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 2.0-beta9
    • 2.8
    • Appenders
    • None
    • All

    Description

      I am using the JDBCAppender to log to a Postgresql database. I have a table (log_entries) that's used for logging purposes.
      One of the attributes is of type INTEGER. The attribute is something specific for our application and we are using ThreadContext (MDC) to set the value of the parameter.

      Currently, log4j provides no support for integer type attributes in the Column element of the JDBC appender configuration (the only types supported are string (default), timestamp - isEventTimestamp flag and Clob - isClob flag).

      When using the default settings in the Column element of the JDBC appender, log4j will create a prepared statement and try to set the value using the Statement.setString() method. Of course, the JDBC driver throws an exception:

      Caused by: org.postgresql.util.PSQLException: ERROR: column "mn_type_d" is of type integer but expression is of type character varying
      Hint: You will need to rewrite or cast the expression.

      My appender configuration:

      <JDBC name="jdbcAppender" tableName="log_entries">
      <DriverManager url="jdbc:postgresql://10.28.10.32:5432/xxx" username="xxx" password="xxx" />
      <Column name="log_entries_id" literal="nextval('hibernate_sequence')" />

      .....
      <Column name="message" isUnicode="false" pattern="%message" />

      <Column name="mn_type_d" isUnicode="false" pattern="%X

      {mn_type_d}

      " /> <-- this is of type integer in the DB but LOG4J tries to insert it as a String -->
      </JDBC>

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            mattsicker Matt Sicker
            tmescic Tihomir Meščić
            Votes:
            3 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment