Eclipse& TomEE:没有JPA日志记录

时间:2014-11-07 12:57:04

标签: eclipse logging openjpa tomee

我正在使用Eclipse和TomEE 1.7.1。

如果我对(Open)JPA的异常记录有问题: 错误不会记录到控制台或记录文件。

例如:

entityManager.createQuery("THIS IS NOT SQL");

如果我在我的WebApp中运行它,它就不会向控制台显示任何内容。 但是:如果我设置一个断点并手动执行它(通过Inspect Cntrl + Shift + I),则在控制台中显示异常。

WTF正在进行?


编辑:

我做了一个只有三个文件的测试项目,将其复制到Tomee-Webapps-Folder直接启动了Tomee。相同的结果:在控制台中看不到任何内容,也没有生成日志文件。

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" 
    xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="hprex">
        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>


        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/mytest"/>
            <property name="javax.persistence.jdbc.user" value="user"/>
            <property name="javax.persistence.jdbc.password" value="test"/>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>

<!--             <property name="openjpa.Log" value="DefaultLevel=TRACE, Runtime=TRACE, Tool=INFO, SQL=TRACE"/>                         -->
<!--             <property name="openjpa.ConnectionFactoryProperties" value="PrettyPrint=true, PrettyPrintLineLength=72, PrintParameters=true"/> -->
        </properties>
    </persistence-unit>
</persistence>

test.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:c="http://java.sun.com/jsp/jstl/core">

<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</h:head>
<h:body>
<h:form>
<h:commandButton action="#{loginBean.login}"/>
</h:form>
</h:body>
</html>

LoginBean.java

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;


@ManagedBean
@SessionScoped
public class LoginBean {

    @PersistenceContext(unitName="mytest")
    private EntityManager em;


    public String login() {
        Query query = em.createQuery("This is not SQL");
        query.getResultList();
        return "test";
    }

}

2 个答案:

答案 0 :(得分:0)

我不相信这条路会导致JPA提供商记录任何内容。当OpenJPA无法创建该查询时,它会将异常抛回您的应用程序。

答案 1 :(得分:0)

你的设置/配置是什么?默认情况下会记录异常。您可以检查:catalina.out,catalina * .log和localhost * .log取决于您对默认位置的配置(如果您使用log4j,slf4j ...那就在您身边以确保记录)。