Alterar sistema de log do hibernate[Resolvido]

5 respostas
nathanpsouza

galera eu queria mudar o slf4j que eh padrao do hibernate para commons-logging, que eh oq a minha aplicação toda ta usando, ja googlei a respeito mas não axei algo relevante de como fazer :confused:

alguem tem uma dica?

vlw!

5 Respostas

Mikhas

O SLF4J é uma “interface” para frameworks, como o hibernate, poderem usar Logs sem se preocupar com o Framwork de log que esta sendo utilizado. É como se fosse um adaptador de logs.

Da uma olhada nesse link
http://www.slf4j.org/manual.html#swapping

nathanpsouza

hmmm vlw cara, entendi :}

nao tem como escapar desse cara ai hehehehe

nathanpsouza

Agora após ter adicionado a jar no classpath to tomando esse erro:

log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [application-context.xml]: Invocation of init method failed; nested exception is java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1403)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:545)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
	at br.com.nt4software.springAnnotation.App.main(App.java:17)
Caused by: java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory
	at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:60)
	at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:151)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:126)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:104)
	at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newConfiguration(LocalSessionFactoryBean.java:813)
	at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:549)
	at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1400)
	... 12 more

meu pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>br.com.nt4software</groupId>
  <artifactId>springAnnotation</artifactId>
  <packaging>jar</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>springAnnotation</name>
  <url>http://maven.apache.org</url>
  <properties>
  	<spring.version>3.0.1.RELEASE</spring.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-context</artifactId>
    	<version>${spring.version}</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-orm</artifactId>
    	<version>${spring.version}</version>
    </dependency>
    <dependency>
    	<groupId>org.hibernate</groupId>
    	<artifactId>hibernate-entitymanager</artifactId>
    	<version>3.4.0.GA</version>
    </dependency>
    <dependency>
    	<groupId>postgresql</groupId>
    	<artifactId>postgresql</artifactId>
    	<version>8.4-701.jdbc4</version>
    	<scope>runtime</scope>
    </dependency>
    <dependency>
    	<groupId>c3p0</groupId>
    	<artifactId>c3p0</artifactId>
    	<version>0.9.1</version>
    	<scope>runtime</scope>
    </dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-log4j12</artifactId>
		<version>1.5.10</version>
	</dependency>
  </dependencies>
</project>

configuração do spring:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-3.0.xsd">
	
	<context:annotation-config />
	
	<bean id="primeiroBeanAnotado" class="br.com.nt4software.springAnnotation.PrimeiroBeanAnotado"/>
	
	<bean id="segundoBeanAnotado" class="br.com.nt4software.springAnnotation.SegundoBeanAnotado"/>
	
	<bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="org.postgresql.Driver"/>
		<property name="jdbcUrl" value="jdbc:postgresql://localhost:5432/teste"/>
		<property name="user" value="postgres"/>
		<property name="password" value="123"/>
	</bean>
	
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="annotatedPackages">
			<list>
				<value>br.com.nt4software.pojo</value>
			</list>
		</property>
		
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.c3p0.max_size">10</prop>
				<prop key="hibernate.c3p0.min_size">2</prop>
				<prop key="hibernate.c3p0.timeout">50000</prop>
				<prop key="hibernate.c3p0.max_statements">50</prop>
				<prop key="hibernate.c3p0.idle_test_period">30000</prop>
				<prop key="hibernate.c3p0.acquire_increment">20</prop>
				<prop key="hibernate.generate_statistics">true</prop>
				<prop key="hibernate.use_sql_comments">false</prop>
				<prop key="hibernate.c3p0.initial_pool_size">4</prop>
				<prop key="hibernate.c3p0.min_pool_size">2</prop>
				<prop key="hibernate.c3p0.max_pool_size">25</prop>
				<!--<prop key="hibernate.hbm2ddl.auto">none</prop>-->
			
				<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
				<prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop> 
			</props>
		</property>
		
		<property name="dataSource" ref="datasource"/>
	</bean>
	
	<bean id="pessoaDao" class="br.com.nt4software.dao.PessoaDao"/>
	
	<bean id="pessoaPojo" class="br.com.nt4software.pojo.PessoaPojo"/>
</beans>
sergiotaborda

nathanpsouza:
galera eu queria mudar o slf4j que eh padrao do hibernate para commons-logging, que eh oq a minha aplicação toda ta usando, ja googlei a respeito mas não axei algo relevante de como fazer :confused:

Outra opção é deixar de usar o commons-logging na sua aplicação e usar o slf4j que é mais moderno , simples, e rápido.

nathanpsouza

como eh uma aplicação de testes, fiz isso, e mudei a versao do slf4j para a versao 1.5.2, funcionou perfeitamente :}

Criado 19 de fevereiro de 2010
Ultima resposta 19 de fev. de 2010
Respostas 5
Participantes 3