Estoy usando hibernate 3 y quiero evitar que descargue todos los mensajes de inicio en la consola. Intenté comentar las líneas stdout en log4j.properties pero no tuve suerte. He pegado mi archivo de registro a continuación. También estoy usando eclipse con la estructura de proyecto estándar y tengo una copia de log4j.properties tanto en la raíz de la carpeta del proyecto como en la carpeta bin.
### mensajes de registro directos a stdout ### # 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 ### mensajes directos al archivo hibernate.log ### log4j.appender.file = org.apache.log4j.FileAppender log4j.appender.file.File = hibernate.log log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern =% d {ABSOLUTE}% 5p% c {1}:% L -% m% n ### establecer niveles de registro: para un registro más detallado, cambie 'info' a 'depurar' ### log4j.rootLogger = advertir, stdout # log4j.logger.org.hibernate = info log4j.logger.org.hibernate = depurar ### registrar la actividad del analizador de consultas HQL # log4j.logger.org.hibernate.hql.ast.AST = debug ### registra solo el SQL # log4j.logger.org.hibernate.SQL = depurar ### registrar parámetros de vinculación JDBC ### log4j.logger.org.hibernate.type = info # log4j.logger.org.hibernate.type = debug ### Exportación / actualización del esquema de registro ### log4j.logger.org.hibernate.tool.hbm2ddl = depurar ### log árboles de análisis HQL # log4j.logger.org.hibernate.hql = debug ### registro de actividad de caché ### # log4j.logger.org.hibernate.cache = depurar ### registrar actividad de transacciones # log4j.logger.org.hibernate.transaction = debug ### registro de adquisición de recursos JDBC # log4j.logger.org.hibernate.jdbc = depurar ### habilita la siguiente línea si quieres rastrear la conexión ### ### fugas al usar DriverManagerConnectionProvider ### # log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider = trac5
Respuestas:
Intente establecer un nivel de registro más razonable. Establecer el nivel de registro en
info
significa que solo se registran los eventos de registro eninfo
un nivel superior (warn
,error
yfatal
), es decirdebug
, se ignoran los eventos de registro.o en la versión XML del archivo de configuración log4j:
<logger name="org.hibernate"> <level value="info"/> </logger>
Consulte también el manual de log4j .
fuente
System.out.println()
llamadas codificadas .Aviso importante: la propiedad (¡parte de la configuración de hibernación, NO parte de la configuración del marco de registro!)
controla el registro directamente en STDOUT sin pasar por cualquier marco de registro (que puede reconocer por el formato de salida faltante de los mensajes). Si usa un marco de registro como log4j, siempre debe establecer esa propiedad en falso porque no le brinda ningún beneficio.
Esa circunstancia me irritó durante bastante tiempo porque nunca me preocupé realmente hasta que traté de escribir un punto de referencia sobre Hibernate.
fuente
hibernate.xml
configuración de Hibernate (es decir, ), a diferencia de mi configuración de registro. ¡Gracias por la anotación!Ejecutando:
java.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.OFF);
antes de que la inicialización de hibernate funcionara para mí.
Nota: la línea de arriba desactivará todos los registros (
Level.OFF
). Si quieres ser menos estricto, puedes usarjava.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.SEVERE);
eso es lo suficientemente silencioso. (O consulte la
java.util.logging.Level
clase para más niveles).fuente
java.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.SEVERE);
Puede deshabilitar muchas de las salidas de hibernación configurando estos accesorios de hibernación (configuración de hb) en falso:
Pero si desea deshabilitar toda la información de la consola, debe establecer el nivel del registrador en NINGUNO de FATAL de clase
org.hibernate
como dice Juha.fuente
Finalmente me di cuenta, es porque Hibernate está usando la fachada de registro slf4j ahora, para hacer un puente a log4j, necesitas poner log4j y slf4j-log4j12 jar en tu lib y luego las propiedades de log4j tomarán el control de los registros de Hibernate.
Mi configuración de pom.xml se ve a continuación:
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.4</version> </dependency>
fuente
-Dorg.jboss.logging.provider=slf4j
opciones a su VM. Escribí un artículo sobre el tema: medium.com/@scadge/how-to-enable-hibernate-logging-dc11545efd3dPara deshabilitar el
Hibernate:select
mensaje en el registro, es posible establecer la propiedad enHibernateJpaVendorAdapter
:<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="showSql" value="false"/> </bean>
fuente
Para aquellos que no quieren soluciones elegantes, solo una forma rápida y sucia de detener esos mensajes, aquí hay una solución que funcionó para mí (uso Hibernate 4.3.6 y Eclipse y no se proporcionan respuestas arriba (o se encuentran en Internet) funcionó; ni los archivos de configuración log4j ni la configuración del nivel de registro mediante programación)
public static void main(String[] args) { //magical - do not touch @SuppressWarnings("unused") org.jboss.logging.Logger logger = org.jboss.logging.Logger.getLogger("org.hibernate"); java.util.logging.Logger.getLogger("org.hibernate").setLevel(java.util.logging.Level.WARNING); //or whatever level you need ... }
Lo usé en un programa tutorial descargado de este sitio.
fuente
Lo primero que debe hacer es averiguar qué marco de registro se utiliza realmente.
Muchos marcos ya están cubiertos por otros autores anteriormente. En caso de que esté utilizando Logback, puede resolver el problema agregando este logback.xml a su classpath:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <logger name="org.hibernate" level="WARN"/> </configuration>
Más información: Logback Manual-Configuration
fuente
Cambié la "depuración" a "información" y funcionó. Aquí esta lo que hice:
Antes de:
Después:
fuente
Reemplace slf4j-jdk14-xxx.jar con slf4j-log4j12-xxx.jar. Si tiene ambos, elimine slf4j-jdk14-xxx.jar. Encontré esta solución en https://forum.hibernate.org/viewtopic.php?f=1&t=999623
fuente
log4j.properties
configuración;log4j.logger.org.hibernate=OFF
Para deshacerse de la salida del registrador en la consola, intente esto.
Estas declaraciones deshabilitaron todas las salidas de la consola del registrador.
fuente
Hay varias partes del registro de hibernación que puede controlar según la jerarquía del registrador del paquete de hibernación (más información sobre la jerarquía del registrador aquí ).
<!-- Log everything in hibernate --> <Logger name="org.hibernate" level="info" additivity="false"> <AppenderRef ref="Console" /> </Logger> <!-- Log SQL statements --> <Logger name="org.hibernate.SQL" level="debug" additivity="false"> <AppenderRef ref="Console" /> <AppenderRef ref="File" /> </Logger> <!-- Log JDBC bind parameters --> <Logger name="org.hibernate.type.descriptor.sql" level="trace" additivity="false"> <AppenderRef ref="Console" /> <AppenderRef ref="File" /> </Logger>
Lo anterior fue tomado de aquí .
Además, podría tener la propiedad
show-sql:true
en su archivo de configuración, ya que reemplaza la configuración del marco de registro. Más sobre eso aquí .fuente
Me las arreglé para detenerme agregando esas 2 líneas
A continuación se muestra cómo se ve mi log4j.properties , solo dejo algunas líneas comentadas que explican el nivel de registro
# Root logger option #Level/rules TRACE < DEBUG < INFO < WARN < ERROR < FATAL. #FATAL: shows messages at a FATAL level only #ERROR: Shows messages classified as ERROR and FATAL #WARNING: Shows messages classified as WARNING, ERROR, and FATAL #INFO: Shows messages classified as INFO, WARNING, ERROR, and FATAL #DEBUG: Shows messages classified as DEBUG, INFO, WARNING, ERROR, and FATAL #TRACE : Shows messages classified as TRACE,DEBUG, INFO, WARNING, ERROR, and FATAL #ALL : Shows messages classified as TRACE,DEBUG, INFO, WARNING, ERROR, and FATAL #OFF : No log messages display log4j.rootLogger=INFO, file, console log4j.logger.main=DEBUG log4j.logger.org.hibernate.orm.deprecation=error log4j.logger.org.hibernate=error ####################################### # Direct log messages to a log file log4j.appender.file.Threshold=ALL log4j.appender.file.file=logs/MyProgram.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c{1} - %m%n # set file size limit log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.MaxFileSize=5MB log4j.appender.file.MaxBackupIndex=50 ############################################# # Direct log messages to System Out log4j.appender.console.Threshold=INFO log4j.appender.console.Target=System.out log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{HH:mm:ss} %-5p %c{1} - %m%n
fuente