Não consegui encontrar nenhuma documentação sobre como configurar o registro do Hibernate usando o arquivo de configuração de estilo XML para Log4j.
Isso é possível ou devo usar um arquivo de configuração de estilo de propriedades para controlar o registro do Hibernate?
Se alguém tiver informações ou links para documentação, agradecemos.
EDIT:
Só para esclarecer, estou procurando um exemplo da sintaxe XML real para controlar o Hibernate.
EDIT2:
Aqui está o que tenho no meu arquivo de configuração XML.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="info"/>
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} [%t] %-5p %c{1} - %m%n"/>
</layout>
</appender>
<appender name="rolling-file" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="Program-Name.log"/>
<param name="MaxFileSize" value="1000KB"/>
<!-- Keep one backup file -->
<param name="MaxBackupIndex" value="4"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %l - %m%n"/>
</layout>
</appender>
<root>
<priority value ="debug" />
<appender-ref ref="console" />
<appender-ref ref="rolling-file" />
</root>
</log4j:configuration>
O registro funciona bem, mas estou procurando uma maneira de diminuir e controlar o registro de hibernação de uma maneira que se separe do registro em nível de aplicativo, pois atualmente está inundando meus registros. Eu encontrei exemplos de como usar o arquivo de preferência para fazer isso, só queria saber como posso fazer isso em um arquivo XML.
Respostas:
De http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html#configuration-logging
Aqui está a lista de categorias de registradores:
Formatado para colar em um arquivo de configuração XML log4j:
NB: A maioria dos loggers usa o nível DEBUG, entretanto org.hibernate.type usa TRACE. Nas versões anteriores do Hibernate org.hibernate.type também usava DEBUG, mas a partir do Hibernate 3 você deve definir o nível para TRACE (ou ALL) para ver o registro de ligação dos parâmetros JDBC.
E uma categoria é especificada como:
Deve ser colocado antes do elemento raiz.
fonte
org.hibernate.engine.transaction
. Consulte: docs.jboss.org/hibernate/orm/4.2/devguide/en-US/html/…L
, por exemplo,<Logger name="org.hibernate.SQL" level="debug" />
ser realmente maiúsculo? Eu recebo um erro no Tomcat na inicialização quando a capitalização do L:"The content of element type 'log4j:configuration' must match '(renderer*,throwableRenderer*,appender*,plugin*,(category|logger)*,root?,(categoryFactory|loggerFactory)?)'."
. Também estou confuso sobre como isso realmente deve ser inserido no meu arquivo log4j.xml. Devo ter um<logger>
bloco separado para cada categoria, completo com as<level>
tags, ou posso me safar com as frases simples que você apresentou?A resposta de Loki aponta para a documentação do Hibernate 3 e fornece boas informações, mas eu ainda não estava obtendo os resultados que esperava.
Muitas sacudidelas, agitações de braços e corridas de ratos mortos em geral me deram o meu queijo.
Como o Hibernate 3 está usando o Simple Logging Facade for Java (SLF4J) (de acordo com os documentos), se você está contando com o Log4j 1.2, você também precisará do slf4j-log4j12-1.5.10.jar se quiser configurar totalmente o registro do Hibernate com um arquivo de configuração log4j. Espero que isso ajude o próximo cara.
fonte
Em resposta ao comentário de homaxto, é isso que eu tenho agora.
A parte principal é
Espero que isto ajude.
fonte
Aqui está o que eu uso:
Obviamente, não gosto de ver mensagens do Hibernate;) - defina o nível como "debug" para obter a saída.
fonte
As respostas foram úteis. Após a alteração, obtive registro duplicado de instruções SQL, uma no arquivo de log log4j e outra no console padrão. Mudei o arquivo persistence.xml para dizer show_sql para false para me livrar do registro do console padrão. Manter format_sql true também afeta o arquivo de log log4j, portanto, mantive isso verdadeiro.
fonte
Você pode configurar seu
log4j
arquivo com a tag de categoria assim (com um anexador de console para o exemplo):Portanto, todos os avisos, erros ou mensagens fatais de hibernação serão exibidos, nada mais. Além disso, seu código e código de biblioteca estarão no nível de informação (portanto, info, aviso, erro e fatal)
Para alterar o nível de registro de uma biblioteca, basta adicionar uma categoria, por exemplo, ao registro de informações da primavera desativa:
Ou com outro anexador, quebre a aditividade (o valor padrão da aditividade é verdadeiro)
E se você não quiser que o hibernate registre todas as consultas, defina a propriedade hibernate
show_sql
comofalse
.fonte