Vraptor+JPA hibernate + Log4j

Boa tarde pessoal, estou criando um arquivo de log com o log4j no meu sistema, já consegui fazer quase tudo, eu estou fazendo algo personalizado, tipo quando eu executo uma query, eu passo uma string para a classe que responsável para gerar o log que pega o usuário logado de uma session e grava no arquivo para mim, até aí beleza…

o que eu gostaria de fazer é o seguinte pegar o o sql executado nas transaçoes de REMOVE e MERGE.

tipo:

manager.getTransaction().begin();
entity = manager.merge(entity);
manager.getTransaction().commit();

pegar o sql executado acima e passar como uma string para a minha classe de log.

eu sei que eu poderia fazer direto para ele pegar o sql no meu arquivo log4.properties
dessa forma:

log4j.additivity.org.hibernate.SQL=true

só que eu não quero pegar todos os sqls gerados.

RESUMINDO: eu gostaria de pegar o sql executado nas transações REMOVE e MERGE, e passar como uma String para a classe que gera o LOG.

acho que vc não vai conseguir fazer isso por vias normais…

talvez se vc conseguir configurar o log para métodos, mas nunca tentei fazer isso… googla lá :wink:

Pois é estou desde manhã procurando no google, mas ainda não encontrei nada concreto, só fazendo via .properties mesmo só que ele pega todos os slq, o que eu gostaria, é de uma forma de gravar o id do registro salvo e nome do usuário que executou.

mas eu vou dar mais uma procurada, caso não encontre vou achar outra forma.

Valeu Lucas.

tenta ver a configuração via xml, ela é um pouco mais completa…

mas mesmo assim, acho que não tem esse controle tão fino…

o que vc pode fazer é configurar um appender que filtra as entradas do log ignorando o que não é UPDATE nem DELETE

Gostei dessa ideia de ignorar o que não é UPDATE nem DELETE, você tem sabe aonde eu posso encontrar como fazer isso?

pega a classe que vc usa como appender, cria uma classe da sua aplicação que implementa Appender do log4j, e delega tudo pra appender original, e faz a sua lógica

daí vc registra o pacote do hibernate.SQL nesse seu appender maroto