如何使用Log4j2 JDBCAppender插入日期列?

如何使用Log4j2 JDBCAppender插入日期列?,jdbc,appender,log4j2,Jdbc,Appender,Log4j2,我试图使用Log4j2将一个值插入到Oracle日期列中。我知道如何使用isEventTimestamp,但我需要从ThreadContext中插入一个日期 我猜我没有正确格式化日期,但是我找不到任何关于如何正确格式化的文档 如何设置日期格式: ThreadContext.put("DATE_VALUE", new Date().toString()); 这是我正在使用的Log4j2 jdbcapender列元素: <Column name="DATE_COLUMN" pattern="

我试图使用Log4j2将一个值插入到Oracle日期列中。我知道如何使用isEventTimestamp,但我需要从ThreadContext中插入一个日期

我猜我没有正确格式化日期,但是我找不到任何关于如何正确格式化的文档

如何设置日期格式:

ThreadContext.put("DATE_VALUE", new Date().toString());
这是我正在使用的Log4j2 jdbcapender列元素:

<Column name="DATE_COLUMN" pattern="%X{DATE_VALUE}" />

有什么建议吗?

如果使用“DD-MMM-YY”格式,它会成功插入日期,但会截断日期,因此不会保留ThreadContext中值的时间成分。我怀疑它是这样工作的,因为'DD-MMM-YY'恰好与Oracle的NLS设置相匹配。我想找到一种不截断日期的方法。L=:你得到解决方案了吗??。甚至我也面临同样的问题?原因是:java.sql.BatchUpdateException:ORA-01861:literal与格式字符串不匹配
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)