2010-11-03 41 views
4

我已將應用程序部署到WebSphere Application Server 7,它使用應用程序服務器中的默認OpenJPA 1.2.2庫,但是,我無法獲取它登錄,我在我的persistence.xml中OpenJPA在WAS上部署時沒有記錄7

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="1.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_1_0.xsd"> 
<persistence-unit name="SvcsLogic" transaction-type="JTA"> 
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> 
    <jta-data-source>jdbc/mydatasource</jta-data-source> 
    <exclude-unlisted-classes>true</exclude-unlisted-classes> 
    <properties> 
    <property name="openjpa.log" value="log4j, DefaultLevel=TRACE" /> 
    <property name="openjpa.Log" value="log4j, DefaultLevel=TRACE" /> 

    <property name="openjpa.jdbc.SynchronizeMappings" 
     value="buildSchema(SchemaAction='add',foreignKeys=true)" /> 
    </properties> 
</persistence-unit> 
</persistence> 

然而,它會忽視的事實是,我希望它使用log4j的記錄,即使刪除了log4j的設置不會修改是」日誌和跟蹤記錄道。我已經把所有的東西都記錄下來,以確保它不起作用。

The WAS Infocenter doc on JPA Logging說,然而避免麻煩:如果在使用應用程序服務器提供的持久性提供程序的容器管理持久性單元中定義「openjpa.Log」屬性,它將被忽略。在這種情況下,您必須使用應用程序服務器的標準跟蹤規範。

這是否意味着我必須更改我的JPA實現才能使日誌工作?如果是這樣,這似乎相當草率。

+0

您從Infocenter的代碼片斷說,openjpa.Log將被忽略,並「爲應用程序服務器使用標準跟蹤規範」。聽起來你已經有了答案。 – Rick 2010-11-03 18:01:07

+1

並非如此,因爲我想將此應用程序的持久性日誌與其他應用程序分開。這就是爲什麼我要使用log4j進行日誌記錄的原因,所以我可以爲此應用程序決定日誌詳細信息。 – 2010-11-03 18:50:32

回答

12

在我看來,看看OpenJPA在WebSphere v7中幕後做什麼的唯一方法是在管理控制檯中啓用跟蹤。

爲了激活管理控制檯中的OpenJPA跟蹤,導航到故障排除 - 日誌和跟蹤 - [您的服務器] - 診斷跟蹤。在配置頁面上,單擊右側的「更改日誌詳細級別」。展開組件樹並選擇OpenJPA的日誌詳細程度進入

*=info: openjpa.Query=all: openjpa.jdbc_JDBC=all: openjpa.jdbc_SQL=all 

到文本字段。點擊「確定」,然後「保存」。您必須重新啓動服務器。