我正在尝试使用 Log4j2 的JDBCAppender将值插入 Oracle 日期列。我知道如何使用 isEventTimestamp,但我需要从 ThreadContext 中插入一个日期。
我猜我没有正确格式化日期,但我找不到任何关于如何正确格式化的文档。
我如何格式化日期:
ThreadContext.put("DATE_VALUE", new Date().toString());
这是我正在使用的 Log4j2 JDBCAppender Column 元素:
<Column name="DATE_COLUMN" pattern="%X{DATE_VALUE}" />
这是我得到的错误:
2013-07-25 08:17:18,145 ERROR Failed to insert record for log event in
manager [jdbcManager{ description=XXXXXXXXX, bufferSize=5,
connectionSource=driverManager{ url=jdbc:oracle:thin:@//XXXXXXXXX,
username=XXXXXXXXX, passwordHash=XXXXXXXXX }, tableName=XXXXXXXXX,
columns=[ { name=DATE_COLUMN, layout=%X{DATE_VALUE}, literal=null,
timestamp=false } ] }]. java.sql.SQLDataException:
ORA-01858: a non-numeric character was found where a numeric was expected
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
有什么建议么?