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] [Resolved] (LOG4J2-424) JDBCAppender: Add support for data types other then String
Date Sat, 07 Jan 2017 09:41:58 GMT

     [ https://issues.apache.org/jira/browse/LOG4J2-424?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Matt Sicker resolved LOG4J2-424.
--------------------------------
       Resolution: Fixed
    Fix Version/s: 2.8

This feature request has been sitting here for a while, but thanks to work done in LOG4J2-1730
(amongst others), this feature was a bit easier to implement now than it was back in 2.0.

The new feature has been added to master. This uses the new ColumnMapping plugin which has
been added to the manual. Please verify and close.

> 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
>             Fix For: 2.8
>
>
> 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