log4j + BD gravar integer

0 respostas
DarthCego

Ola amigos

Estou com um problema na hora de gravar logs em um BD com o log4j o problema é que preciso inserir o ID do usuario q é um Integer no banco e simplesmente nao insere

metodo q gera o log
private static Logger logger = Logger.getLogger("logger");
    
    public static void log(String msg, String ip, String browser Integer user) {
    	
        if (logger.isInfoEnabled()) {
        	MDC.put("user", user);
        	MDC.put("ip", ip);
        	MDC.put("browser", browser);
            logger.info(msg);
        }
    }
log4j.properties
log4j.rootCategory= POSTGRES

log4j.appender.POSTGRES = org.apache.log4j.jdbc.JDBCAppender
log4j.appender.POSTGRES.layout=org.apache.log4j.PatternLayout
log4j.appender.POSTGRES.driver = org.postgresql.Driver
log4j.appender.POSTGRES.user = postgres
log4j.appender.POSTGRES.password = postgres
log4j.appender.POSTGRES.URL = jdbc:postgresql://localhost:5432/banco
log4j.appender.POSTGRES.sql = INSERT INTO LOGS(usuario, nivel, mensagem, data, browser, ip) 
    VALUES('%X{user}', '%p', '%m', '%d{dd-MM-yyyy HH:mm:ss.SSS}', '%X{browser}', '%X{ip}')
log4j.threshold=INFO
log4j:ERROR Failed to excute sql
org.postgresql.util.PSQLException: ERRO: sintaxe de entrada é inválida para integer: ""
eu ja tentei tirar as '' do $X{user} gerando
ERRO: erro de sintaxe em ou próximo a ","

ja tentei fazer um cast dentro do sql

CAST'%X{user}' as int

mas nada resumindo como eu insiro um Integer num sql do log4j pois preciso desse int por ele ser um FK no banco de dados

Obrigado

Criado 17 de abril de 2012
Respostas 0
Participantes 1