Hibernate.cfg.xml - Ajuda

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

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…

[code]false //para não aparecer

true //para aparecer[/code]

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

[code]#### 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[/code]

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?! :stuck_out_tongue:

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…

[quote=Flavio Luiz]Também estou desistindo…
Apesar de ter pessoas que me dizem que tem como fazer…[/quote]

E essas pessoas que dizem como fazer não te deram uma força pra resolve :?: :slight_smile: