Have you tried ThreadContext.remove("NUM")?

Remko

Sent from my iPhone

> On 2015/07/22, at 7:45, Benjamin Jaton <[email protected]> wrote:
> 
> Hello,
> 
> I am using the JDBCAppender:
> 
> {
>  "type" : "Jdbc",
>  "name" : "MyDatabaseAppender",
>  "tableName" : "LOGS",
>  "ignoreExceptions" : "false",
>  "ConnectionFactory" : {
>    "class" : "test.ConnectionFactory",
>    "method" : "getDatabaseAppenderDataSource"
>  },
>  "Column" : [
>     { "name" : "ID", "pattern" : "%X{ID}", "isUnicode" : "false" },
>     { "name" : "NUM", "pattern" : "%X{NUM}", "isUnicode" : "false" }
> ]
> }
> 
> As you can see, I am using the ThreadContext to pass the variables.
> 
> ThreadContext.put("ID", id++);
> ThreadContext.put("NUM", "41");
> 
> The NUM column is of type BIGINT, and is nullable.
> 
> I am trying to set it to NULL with:
>  ThreadContext.put("NUM", "NULL");
> or
>  ThreadContext.put("NUM", null);
> or
>  ThreadContext.put("NUM", "");
> 
> Every time I get
> Caused by: org.apache.derby.client.am.SqlException: Error for batch element
> #0: Invalid character string format for type BIGINT.
>    at org.apache.derby.client.am.Statement.completeExecute(Unknown Source)
> 
> I believe this is because, in
> org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager.writeInternal()
> we always do
>  this.statement.setString(i++, column.layout.toSerializable(event));
> 
> So we always end up feeding the String "" or "NULL" to the statement.
> 
> Is there anything I can do to alter this behavior?
> 
> Thanks

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to