example ejemplo configurar xml hibernate logging configuration log4j

xml - ejemplo - log4j2 json configuration example



¿Configurando el registro de Hibernate usando el archivo de configuración XML de Log4j? (6)

No he podido encontrar ninguna documentación sobre cómo configurar el registro de Hibernate utilizando el archivo de configuración de estilo XML para Log4j.

¿Esto es posible o tengo un archivo de configuración de estilo de propiedades para controlar el registro de Hibernate?

Si alguien tiene información o enlaces a la documentación, la apreciaría.

EDITAR:
Solo para aclarar, estoy buscando un ejemplo de la sintaxis XML real para controlar Hibernate.

EDIT2:
Esto es lo que tengo en mi archivo de configuración 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>

El registro funciona bien, pero estoy buscando una manera de bajarme y controlar el registro de hibernación de una manera que separe de mi registro de nivel de aplicación, ya que actualmente inunda mis registros. He encontrado ejemplos de cómo usar el archivo de preferencias para hacer esto, solo me preguntaba cómo puedo hacer esto en un archivo XML.


De http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html#configuration-logging

Aquí está la lista de categorías de registradores:

Category Function org.hibernate.SQL Log all SQL DML statements as they are executed org.hibernate.type Log all JDBC parameters org.hibernate.tool.hbm2ddl Log all SQL DDL statements as they are executed org.hibernate.pretty Log the state of all entities (max 20 entities) associated with the session at flush time org.hibernate.cache Log all second-level cache activity org.hibernate.transaction Log transaction related activity org.hibernate.jdbc Log all JDBC resource acquisition org.hibernate.hql.ast.AST Log HQL and SQL ASTs during query parsing org.hibernate.secure Log all JAAS authorization requests org.hibernate Log everything (a lot of information, but very useful for troubleshooting)

Formateado para pegar en un archivo de configuración log4j XML:

<!-- Log all SQL DML statements as they are executed --> <Logger name="org.hibernate.SQL" level="debug" /> <!-- Log all JDBC parameters --> <Logger name="org.hibernate.type" level="debug" /> <!-- Log all SQL DDL statements as they are executed --> <Logger name="org.hibernate.tool.hbm2ddl" level="debug" /> <!-- Log the state of all entities (max 20 entities) associated with the session at flush time --> <Logger name="org.hibernate.pretty" level="debug" /> <!-- Log all second-level cache activity --> <Logger name="org.hibernate.cache" level="debug" /> <!-- Log transaction related activity --> <Logger name="org.hibernate.transaction" level="debug" /> <!-- Log all JDBC resource acquisition --> <Logger name="org.hibernate.jdbc" level="debug" /> <!-- Log HQL and SQL ASTs during query parsing --> <Logger name="org.hibernate.hql.ast.AST" level="debug" /> <!-- Log all JAAS authorization requests --> <Logger name="org.hibernate.secure" level="debug" /> <!-- Log everything (a lot of information, but very useful for troubleshooting) --> <Logger name="org.hibernate" level="debug" />

NB: la mayoría de los madereros utilizan el nivel de DEPURACIÓN, sin embargo, org.hibernate.type usa TRACE. En versiones anteriores de Hibernate, org.hibernate.type también utilizaba DEBUG, pero a partir de Hibernate 3 debe establecer el nivel en TRACE (o ALL) para ver el registro de enlace del parámetro JDBC.

Y una categoría se especifica como tal:

<logger name="org.hibernate"> <level value="ALL" /> <appender-ref ref="FILE"/> </logger>

Debe colocarse antes del elemento raíz.


En respuesta al comentario de homaxto, esto es lo que tengo ahora.

<?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="debug"/> <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="500KB"/> <param name="MaxBackupIndex" value="4"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %l - %m%n"/> </layout> </appender> <logger name="org.hibernate"> <level value="info" /> </logger> <root> <priority value ="debug" /> <appender-ref ref="console" /> <appender-ref ref="rolling-file" /> </root> </log4j:configuration>

La parte clave es

<logger name="org.hibernate"> <level value="info" /> </logger>

Espero que esto ayude.


Esto es lo que uso:

<logger name="org.hibernate"> <level value="warn"/> </logger> <logger name="org.hibernate.SQL"> <level value="warn"/> </logger> <logger name="org.hibernate.type"> <level value="warn"/> </logger> <root> <priority value="info"/> <appender-ref ref="C1"/> </root>

Obviamente, no me gusta ver mensajes de Hibernate;) - establecer el nivel de "depuración" para obtener el resultado.


La answer apunta a los documentos de Hibernate 3 y proporciona buena información, pero todavía no obtenía los resultados que esperaba.

Muchas palizas, movimientos de brazos y carreras de ratón muertas en general me dieron el mío.

Debido a que Hibernate 3 está utilizando Simple Logging Facade para Java (SLF4J) (según los documentos), si está confiando en Log4j 1.2 también necesitará el slf4j-log4j12-1.5.10.jar si quiere configurar completamente el registro de Hibernate con un archivo de configuración log4j. Espero que esto ayude al próximo tipo.


Las respuestas fueron útiles. Después del cambio, obtuve el registro duplicado de las sentencias SQL, una en el archivo de registro log4j y otra en la consola estándar. Cambié el archivo persistence.xml para decir show_sql a false para eliminar el registro de la consola estándar. Mantener format_sql true también afecta el archivo log log4j, así que lo mantuve cierto.

<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0"> <persistence-unit name="myUnit" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver"/> <property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:file:d:/temp/database/cap1000;shutdown=true"></property> <property name="dialect" value="org.hibernate.dialect.HSQLDialect"/> <property name="hibernate.show_sql" value="false"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.connection.username" value="sa"/> <property name="hibernate.hbm2ddl.auto" value="create-drop"/> </properties> </persistence-unit> </persistence>


Puede configurar su archivo log4j con la etiqueta de categoría como esta (con un apéndice de consola para el ejemplo):

<appender name="console" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yy-MM-dd HH:mm:ss} %p %c - %m%n" /> </layout> </appender> <category name="org.hibernate"> <priority value="WARN" /> </category> <root> <priority value="INFO" /> <appender-ref ref="console" /> </root>

De modo que se mostrarán todos los mensajes de advertencia, error o fatal de hibernación, nada más. Además, su código y el código de la biblioteca estarán en el nivel de información (por lo que información, advertencia, error y fatal)

Para cambiar el nivel de registro de una biblioteca, simplemente agregue una categoría, por ejemplo, al registro de información de primavera desactivo:

<category name="org.springframework"> <priority value="WARN" /> </category>

O con otro appender, rompa la aditividad (el valor predeterminado de la adición es verdadero)

<category name="org.springframework" additivity="false"> <priority value="WARN" /> <appender-ref ref="anotherAppender" /> </category>

Y si no desea que ese hibernate registre cada consulta, establezca la propiedad de hibernación show_sql en false .