Eu estou precisando gerar um log com EXATAMENTE o SQL statement executado pelo hibernate em cada transação de insert, update e delete.
Eu uso o Hibernate e também o padrão DAO na minha aplicação.
Sds,
Bianca.
Eu estou precisando gerar um log com EXATAMENTE o SQL statement executado pelo hibernate em cada transação de insert, update e delete.
Eu uso o Hibernate e também o padrão DAO na minha aplicação.
Sds,
Bianca.
Adicione o seguinte no log4j.properties:
log4j.logger.org.hibernate.SQL=DEBUG
E se quiser os parâmetros também:
log4j.logger.org.hibernate.type=DEBUG
LIPE,
eu não tô usando log4j e nem sei usar. Tô meio perdida. Teria que ver isso do início. Alguma dica?
Sds,
Bianca.
Você pode não usar, mas o Hibernate usa 
Crie um arquivo chamado log4j.properties na raiz da aplicação (no mesmo lugar onde colocou o hibernate.cfg.xml) e insira o seguinte nele:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=warn, stdout
#para logar as queries
#para desligar, mude para
#log4j.logger.org.hibernate.SQL=WARN
log4j.logger.org.hibernate.SQL=DEBUG
#para logar os parâmetros passados nas queries
#para desligar, mude para
#log4j.logger.org.hibernate.type=WARN
log4j.logger.org.hibernate.type=DEBUG
Como pode ver nas primeiras linhas, isto configura um ConsoleAppender, que faz apenas ‘System.out.println’ nas strings a serem logadas. Para saber como passar para um arquivo, busque no google por “FileAppender example”.
LIPE,
Valeu! Funcionou! Ajudou BASTANTE.
Eu preciso apenas do LOG dos INSERTs, UPDATEs e DELETEs executados (COMMITADOS). Potanto ainda tenho duas outras dúvidas que são as seguintes:
1 - Esse LOG que aparece são apenas as operações que foram “COMMITADAS”? Caso não seja, existe uma maneira de fazer essa distinção?
2 - Existe uma forma de eu escolher o tipo de informação de SQL mostrada no LOG? Pois da forma que está ele mostra também os SELECTs executados, e eu só preciso das modificações no Banco. Mostrando os selects cai bastante os desempenho da aplicação também!
Mais uma vez obrigada!
Bianca.
Não sei dizer, mas basta fazer um rollback proposital para descobrir.
Aí a coisa complica bastante hehe penso numa solução utilizando interceptors. Aqui um exemplo:
http://www.hibernate.org/195.html
Tem certeza que não é mais fácil logar tudo e filtrar depois?
Acho que isto vai te ajudar… Não sei se ainda vc quer mas dentro do seu hibernate.cfg.xml você pode colocar está tag
isto vai fazer que todo comando do hibernate seja jogado para o log.
Espero que te ajude.
A configuração do log4j.properties sobrescreve esta.