Во-первых, в сторону: у вас есть это в вашем файле persistence.xml:
<property name="openjpa.Log" value="SQL=TRACE" />
<property name="openjpa.Log" value="File=openjpa_ra.log" />
Только один из них вступит в силу. То есть, как и любые свойства Java, они не являются кумулятивными, OpenJPA не будет объединять эти два параметра Log, но скорее будет использовать один (вероятно, последний обработанный). Выше должно быть объединено, как это:
<property name="openjpa.Log" value="SQL=TRACE, File=openjpa_ra.log" />
Далее, позвольте мне ответить на ваш вопрос под руку: Если вы используете контейнер управляемого бинома (например @PersistenceContext), то параметры трассировки в файле persistence.xml игнорируются , Это связано с тем, что трассировка обрабатывается контейнером/WAS при использовании контейнера. Чтобы объяснить это, пожалуйста, посмотрите на этот документ:
http://www.ibm.com/support/knowledgecenter/en/SSEQTP_8.5.5/com.ibm.websphere.base.doc/ae/tejb_loggingwjpa.html
В частности, это предупреждение:
избежать неприятностей: Свойство openjpa.Log игнорируется, если она определена в единице хранения, управляемой контейнером, которая использует поставщиков персистентности, которые предоставляются сервером приложений. В этом случае вы должны использовать стандартную спецификацию трассировки для сервера приложений.
Если вы заходите в консоль администратора, вы можете установить местоположение вашего вывода трассировки.Но я не верю, что есть способ перейти от использования WAS trace к log4j. Когда jpa-провайдер работает в WAS, компонент jeeruntime принимает функции ведения журнала между интерфейсом WAS Trace и OpenJPA, поэтому оператор «Избегайте проблем» в инфоцентре и ссылку «спецификация трассировки для сервера приложений». В WAS вам нужно будет использовать спецификацию трассировки, например. openjpa=all:JPA=all or openjpa.jdbc.SQL=all
, последний даст вам только SQL-трассировку, первую трассировку JPA. В нижней строке вы не сможете перенаправить только трассировку OpenJPA/JPA в один файл, когда используется контейнер.
Если вы не используете контейнер удалось, то это должно печатать SQL тракта в файл openjpa_ra.log:
<property name="openjpa.Log" value="SQL=TRACE, File=openjpa_ra.log" />
Я хотел бы попробовать это, и только это ..... Я думаю, что настройки вы Записывать добавленный в ваше «обновление», может быть слишком запутанным. Если вы не используете постоянное управление контейнером, тогда ведение журнала WAS не задействовано, и настройки журнала будут соблюдены. Кроме того, вы должны иметь возможность использовать Log4j. Использование Log4j документирована в OpenJPA документы здесь:
http://openjpa.apache.org/builds/2.2.2/apache-openjpa/docs/manual#ref_guide_logging_log4j
Я надеюсь, что это помогает, пожалуйста, дайте мне знать, если вам нужно больше информации.
Спасибо,
Хит
Большое спасибо! Я сделал это, как во время выполнения, так и в настройках, но ничего не изменилось. Все еще не удается записать в файл \ журнал. – Anton
Вы видите что-либо в системной ошибке или системной ошибке в журнале сервера, что объясняет конфликт log4j. Вы находите свои журналы JPA в System out? –
Я решил получить как минимум файл. Мне удалось получить некоторый результат, несмотря на то, что это не совсем то, что я хочу. – Anton