Pessoal alguém sabe como configurar o hibernate para ele não liberar os logs no console ?
Minha app é desktop e o usuario utilizara o console… e preciso tirar logs do console…
Acredito que isso resolva com alguma tag de configuração no hibernate.cfg.xml
Hibernate.cfg.xml - Ajuda
22 Respostas
Se você está falando do SQL que o hibernate mostra no console, seria isso:
<property name="hibernate.show_sql">false</property>
Aqui tem a lista de propriedades opcionais do arquivo de configuração do hibernate.
Se você utiliza o log4j.properties para definir os logs, basta comentar as respectivas linhas…
Então Diego eu utilizo o Log4J sim, mas não defini linha alguma para os log do Hibernate…
Como disse minha app é no console…
De propósito eu não subi o banco… e ao instaciar o SessionFactory do Hibernate ele esta lançando uma [color=red]Stack Trace[/color]
java.sql.SQLException: socket creation error
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.jdbcConnection.<init>(Unknown Source)
at org.hsqldb.jdbcDriver.getConnection(Unknown Source)
at org.hsqldb.jdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:154)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133)
at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51)
at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:252)
at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:211)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:343)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1327)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
at directory.dao.DaoBase.<clinit>(DaoBase.java:24)
at directory.bo.ServiceCompany.<init>(ServiceCompany.java:22)
at directory.main.FileRecognition.isInstance(FileRecognition.java:98)
at directory.main.FileRecognition.checkExtension(FileRecognition.java:84)
at directory.main.FileRecognition.searchArchives(FileRecognition.java:71)
at directory.main.FileRecognition.searchArchives(FileRecognition.java:68)
at directory.main.FileRecognition.main(FileRecognition.java:48)
3893 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: -80, SQLState: 08000
3893 [main] ERROR org.hibernate.util.JDBCExceptionReporter - socket creation error
a instanciação do sessionFactory esta dentro do block Try/catch …
static {
try {
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
} catch (HibernateException e) {
LogNotify.error(logger, "Erro de conexao com a base de dados", e);
throw e;
} catch (Throwable ex) {
LogNotify.error(logger, "Erro de conexao com a base de dados", ex);
throw new ExceptionInInitializerError(ex);
}
}
Mas ainda assim a exception aparece, o unico motivo para ela aparecer é q o metodo .buildSessionFactory(); trata essa exception e mostra ela atravez do log, muito provavelmente pelo Log4J que também uso em minha app…
Por isso quero tirar o logs do hibernate para ver se ela ñ aparece mais…
<property name="hibernate.show_sql">false</property> //para não aparecer
<property name="hibernate.show_sql">true</property> //para aparecer
Então eu ja fiz isso… só não resolve meu problema, pois ele deixar de apresetar as queries dele…
O que desejo tirar é isso aqui…
[color=red]1532 [main] INFO org.hibernate.cfg.SettingsFactory - Structured second-level cache entries: disabled
1532 [main] INFO org.hibernate.cfg.SettingsFactory - Statistics: disabled
1532 [main] INFO org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled
1532 [main] INFO org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo
1532 [main] INFO org.hibernate.cfg.SettingsFactory - Named query checking : enabled
1579 [main] INFO org.hibernate.impl.SessionFactoryImpl - building session factory
1829 [main] INFO org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured
1845 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - Running hbm2ddl schema export
1845 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - exporting generated schema to database
2876 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaExport - schema export unsuccessful[/color]
Muito provavelmente vcs teram isso tbm em seus projetos caso estejam usando Hibernate e Log4J (na realidade o jar slf4j)
mostra teu log4j
#### Use two appenders, one to log to console, another to log to a file
log4j.rootLogger=debug, DEBUG, stdout, ERROR, INFO
# Print only messages of priority DEBUG or higher for your category
log4j.logger.storedisc=DEBUG, WARN, ERROR, INFO
#### First appender writes to console
#log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
#log4j.appender.stdout.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n
#### Second appender writes to a file
log4j.appender.DEBUG=org.apache.log4j.RollingFileAppender
log4j.appender.DEBUG.File=${filter.log4j.path.log}/directory_debug.log
log4j.appender.DEBUG.MaxFileSize=100KB
log4j.appender.DEBUG.MaxBackupIndex=1
log4j.appender.DEBUG.layout=org.apache.log4j.PatternLayout
log4j.appender.DEBUG.layout.ConversionPattern=%d %p %t %c - %m%n
#info appender
log4j.appender.INFO=org.apache.log4j.DailyRollingFileAppender
log4j.appender.INFO.File=${filter.log4j.path.log}/directory_info.log
log4j.appender.INFO.MaxFileSize=100KB
log4j.appender.INFO.MaxBackupIndex=1
log4j.appender.INFO.layout=org.apache.log4j.PatternLayout
log4j.appender.INFO.layout.ConversionPattern=%d %p %t %c - %m%n
#debug appender
log4j.appender.ERROR=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ERROR.File=${filter.log4j.path.log}/directory_error.log
log4j.appender.ERROR.MaxFileSize=100KB
log4j.appender.ERROR.MaxBackupIndex=1
log4j.appender.ERROR.layout=org.apache.log4j.PatternLayout
log4j.appender.ERROR.layout.ConversionPattern=%d %p %t %c - %m%n
Como vcs podem ver eu não fiz nenhuma config para o hibernate…
ate msm comentei as confing de log no console…
pelo link q o Diego passou la diz q o hibernate usa o jar sfl4J para fazer logging…
achei algo que falava em colocar esse trecho no log4j log4j.rootCategory = WARN, fileOut
romarcio, foi boa a suagestão quase resolveu meu problema… mas ainda stack trace que o metodo buildSessionFactory() lança pelo log é apresentada…
Consegui ver q é WARN…
Esse é o catch do metodo do buildSessionFactory
catch (SQLException sqle) {
log.warn("Could not obtain connection metadata", sqle);
}
Bom, o que parece então é que tem algum erro na aplicação. Já que está estourando a exceção SQLException.
Tem que descobrir o pq está causando essa exceção.
Da uma revisada na sua conexão JDBC, e nos seus mapeamentos do Hibernate.
Com certeza a um erro… Foi como eu disse… de proposito eu rodei minha app sem subir o banco, sabendo q iriar da erro de conexao… Como minha app é no console, eu não posso mostrar nenhuma stack trace para ele…
A exception esta sendo tratada só q o hibernate ta jogando ela no Log, q aparesenta no console, logo o usuario ira ver a stack trace…
Acredito que tenha uma forma de configurar o hibernate a ñ fazer isso…
e é o q procuro
Bom, a única maneira então é fazer assim:
catch (SQLException sqle) {
//deixa em branco
}
Cria o Cath, mas não coloca nada nele.
Agora, tem uma coisa também, se você copiou essa exceção do seu código, da uma olhada, acho que com “virgula” na funciona, troca por “+”:
catch (SQLException sqle) {
// log.warn("Could not obtain connection metadata", sqle);
log.warn("Could not obtain connection metadata" + sqle);
}
Então não kra… hehe
como disse a stack trace apresentada ja foi tratapada pelo metodo do hibernate… mas o catch desse metodo loja a stack trace no log aparecendo no console…
Tu sabe que acontece uma exception e tem que deixar a exception acontecendo?! é isso?! 
Vamos la…
Assim como qualquer outra app, não é muito conveniente o usuario estar usando o sistema (qualquer sistema, web, desk, movel)e derepente aparecer para ele uma stack trace… Se ela aparece é pq ñ foi tratada !!!
A execução da minha app é no console do SO, ou seja tds as execuções q nos geralmente vemos no console agora do Eclipse muito provavelmente aparecerá no console do SO tbm…
Como disse executei minha app sem subir o banco propositalmente, simplesmente para ver se apareceria alguma stack trace !!!
E aparece, só essa esta tratada… e alias quando gera essa exception em especifico não cai no block catch, porque o metodo q acessei esta tratando ela, entretanto ela esta jogando a Exception para o log (como é de costume), com tudo esse log vai ser apresentado tbm no console… contudo o usuario vai ver a bendita da stack trace…
o que preciso é configurar agora o Hibernate (pois é ele q joga a exception para o log, consequentemente para o console) para não gerar log…
Muito provavelmente essa configuração é feita no hibernate.cfg.xml e tbm não é a property
<property name="show_sql">false</property> pois ela só inibirá os HQL do hibernate…
Complicado isso, procurei bastante no google e não encontrei mais nada a respeito.
Começo achar que essa exceção não da para evitar que ele mostre no console.
Também estou desistindo…
Apesar de ter pessoas que me dizem que tem como fazer…
Também estou desistindo…
Apesar de ter pessoas que me dizem que tem como fazer…
E essas pessoas que dizem como fazer não te deram uma força pra resolve :?: 
Elas também não sabem, mas afirma que seja possivel…
De certa forma eu também acredito que isso seja possivel… Apesar de não saber com se faz…
log4j.logger.net.sf.hibernate=OFF
log4j.logger.net.sf.hibernate=False
Caso não funcione, tenta essas:
log4j.logger.org.hibernate.type=error
log4j.logger.org.hibernate=error
log4j.logger.org.hibernate.tool.hbm2ddl=error
Kra infelizmente não deu certo…
Nenhuma das tres…
Vlw pela força…