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