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á 
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