logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matt Sicker (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (LOG4J2-424) JDBCAppender: Add support for data types other then String
Date Wed, 04 Jan 2017 05:44:58 GMT

    [ https://issues.apache.org/jira/browse/LOG4J2-424?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15797245#comment-15797245
] 

Matt Sicker edited comment on LOG4J2-424 at 1/4/17 5:44 AM:
------------------------------------------------------------

>From LOG4J2-1730, I added a ColumnMapping plugin for CassandraAppender. This plugin could
probably be reused to implement this feature request.

The main update here would be using ColumnMapping instead of ColumnConfig, then using {{PreparedStatement.setObject()}}
instead of {{setString()}} to get JDBC driver auto-conversion.


was (Author: jvz):
>From LOG4J2-1730, I added a ColumnMapping plugin for CassandraAppender. This plugin could
probably be reused to implement this feature request.

> 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: Matt Sicker
>
> 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>



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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


Mime
View raw message