Gary Gregory commented on LOG4J2-424:

Note that this is only a blocker if the JDBC driver you are using is not smart 
enough to do type conversion.

> JDBCAppender: Add support for data types other then String
> ----------------------------------------------------------
>                 Key: LOG4J2-424
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-424
>             Project: Log4j 2
>          Issue Type: Improvement
>          Components: Appenders
>    Affects Versions: 2.0-beta9
>         Environment: All
>            Reporter: Tihomir Meščić
>            Assignee: Nick Williams
> 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://" 
> 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>

This message was sent by Atlassian JIRA

To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-dev-h...@logging.apache.org

Reply via email to