log4j com Hibernate e Spring

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.