redimensionar - seticon java jlabel
Desactivando la salida de la consola de registro de hibernaciĆ³n (10)
Aviso importante: la propiedad (parte de la configuración de hibernación, ¡NO forma parte de la configuración del marco de registro!)
hibernate.show_sql
controla el registro directamente en STDOUT omitiendo cualquier marco de registro (que puede reconocer por el formato de salida faltante de los mensajes). Si utiliza un marco de registro como log4j, siempre debe establecer esa propiedad en falso porque no le proporciona ningún beneficio.
Esa circunstancia me irritó bastante tiempo porque nunca me preocupé hasta que traté de escribir algún punto de referencia con respecto a Hibernate.
Estoy usando hibernate 3 y quiero evitar que descargue todos los mensajes de inicio a la consola. Intenté comentar las líneas de 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.
### direct log messages to 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 ### direct messages to file 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 ### set log levels - for more verbose logging change ''info'' to ''debug'' ### log4j.rootLogger=warn, stdout #log4j.logger.org.hibernate=info log4j.logger.org.hibernate=debug ### log HQL query parser activity #log4j.logger.org.hibernate.hql.ast.AST=debug ### log just the SQL #log4j.logger.org.hibernate.SQL=debug ### log JDBC bind parameters ### log4j.logger.org.hibernate.type=info #log4j.logger.org.hibernate.type=debug ### log schema export/update ### log4j.logger.org.hibernate.tool.hbm2ddl=debug ### log HQL parse trees #log4j.logger.org.hibernate.hql=debug ### log cache activity ### #log4j.logger.org.hibernate.cache=debug ### log transaction activity #log4j.logger.org.hibernate.transaction=debug ### log JDBC resource acquisition #log4j.logger.org.hibernate.jdbc=debug ### enable the following line if you want to track down connection ### ### leakages when using DriverManagerConnectionProvider ### #log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trac5
Cambié la "depuración" a "información" y funcionó. Aquí esta lo que hice:
Antes de:
log4j.rootLogger=debug, stdout, R
Después:
log4j.rootLogger=info, stdout, R
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á cada sesión ( Level.OFF
). Si quieres ser menos estricto, puedes usar
java.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.SEVERE);
eso es lo suficientemente silencioso (O consulte la clase java.util.logging.Level
para obtener más niveles).
Finalmente me di cuenta, es porque Hibernate está usando slf4j log fachada ahora, para tender un puente a log4j, necesitas poner log4j y slf4j-log4j12 jar a tu lib y luego las propiedades log4j controlarán los registros de Hibernate.
La configuración de mi 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>
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í (utilizo Hibernate 4.3.6 y Eclipse y no obtuve respuestas antes (o las encontré en Internet) funcionó, ni log4j config files ni establecer el nivel de registro programáticamente)
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
Para deshabilitar Hibernate:select
mensaje en el registro, es posible establecer la propiedad en HibernateJpaVendorAdapter
:
<bean id="jpaVendorAdapter"
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="false"/>
</bean>
Para deshacerse de la salida del registrador en la consola, pruebe esto.
ch.qos.logback.classic.LoggerContext.LoggerContext loggerContext = (LoggerContext) org.slf4j.LoggerFactory.LoggerFactory.getILoggerFactory();
loggerContext.stop();
Estas declaraciones desactivaron todas las salidas de la consola del registrador.
Puede deshabilitar muchas de las salidas de hibernación configurando estos atributos de hibernación (configuración de hb) en falso:
hibernate.show_sql
hibernate.generate_statistics
hibernate.use_sql_comments
Pero si desea deshabilitar toda la información de la consola, debe configurar el nivel de registrador como NINGUNO de FATAL de la clase org.hibernate
como Juha.
Reemplace slf4j-jdk14-xxx.jar con slf4j-log4j12-xxx.jar. Si tiene ambas, elimine slf4j-jdk14-xxx.jar. Encontré esta solución en https://forum.hibernate.org/viewtopic.php?f=1&t=999623
Intenta establecer un nivel de registro más razonable. Establecer el nivel de registro en la info
significa que solo se registra el evento de registro en la info
o nivel superior ( warn
, error
y fatal
), es decir, se ignoran los eventos de registro de debug
.
log4j.logger.org.hibernate=info
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 .