seticon redimensionar personalizar icon clase java hibernate logging

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.



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 .