Seguinte: Utilizo Hibernate como JPA 2.0 provider. Não uso o arquivo hibernate.cfg.xml, ao invés disso, uso o persistence.xml para configurar o Hibernate como JPA 2 provider.
Além desses frameworks, uso o Spring para IoC e DI e o Tomcat como servlet container.
Como preciso fazer log de erros de todo o sistema, escolhi o log4j para tanto.
Então coloquei a seguinte linha no meu web.xml
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
No arquivo /WEB-INF/log4j.properties, coloquei o seguinte conteúdo:
log4j.rootLogger=DEBUG, LOG
log4j.appender.LOG=org.apache.log4j.RollingFileAppender
log4j.appender.LOG.layout=org.apache.log4j.PatternLayout
log4j.appender.LOG.layout.ConversionPattern=%d [%t] %p %c - %m%n
log4j.appender.LOG.File=/opt/tomcat6/logs/log.txt
log4j.appender.LOG.MaxFileSize=10MB
log4j.appender.LOG.MaxBackupIndex=10
Só que eu rodo a aplicação e ele nem cria o arquivo /opt/tomcat6/logs/log.txt
Ele cria outros arquivos de log do Spring, mas esse ele não cria. Tem algo de errado no meu
raciocínio ?
Exemplo:
Quando estou rodando o sistema aqui, ele aborta a thread dentro de um DAO. Sei que é dentro dessa classe, pois acompanhei na console, danto mensagens na console para acompanhar até onde ele vai no processamento. Esse DAO faz uso do EntityManager e da API Criteria (JPA 2.0) para fazer construir uma consulta.
Cheguei na conclusão que ele para no seguinte código:
public Systemuser getSystemuserByKeyAndPwd(String key, String pwd) {
Systemuser user = null;
EntityManager entityManager = emf.createEntityManager();
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Systemuser> cq = cb.createQuery(Systemuser.class);
Root<Systemuser> f = cq.from(Systemuser.class);
Path<String> systemuserKey = f.get(Systemuser_.systemuserKey); // <=== O sistema para nesse ponto...
Path<String> systemuserPwd = f.get(Systemuser_.systemuserPwd);
Predicate equalKey = cb.equal(systemuserKey, key);
Predicate equalPwd = cb.equal(systemuserPwd, pwd);
Predicate equalKeyAndEqualPwd = cb.and(equalKey,equalPwd);
CriteriaQuery<Systemuser> where = cq.where(equalKeyAndEqualPwd);
user = entityManager.createQuery(where).getSingleResult();
return user;
}
Independente do erro, eu precisaria tê-lo em algum log para saber de que erro se trata e resolver… Não sei nem qual exception ele está lançando…
Se alguém puder ajudar, agradeço muito.
[]s.