log4j не работает на сервере weblogic? - PullRequest
2 голосов
/ 12 сентября 2011

Я использую weblogic 10.3.4, я пытаюсь записать журнал с log4j.но во время выполнения мое приложение не получает никаких log4j.properties.даже это не генерирует никакого предупреждения, так как «ошибка инициализации log4j».

Я попытался поместить свой файл свойств в папку src, папку classes, а затем создал один jar-файл и поместил его в домен lib.все еще его не выбирая.даже когда я пишу журнал с той же банкой в ​​автономном приложении, он работает нормально.

, пожалуйста, помогите мне с ценными предложениями.

Ответы [ 4 ]

3 голосов
/ 16 ноября 2011

Я попробовал решение , предложенное на форумах Oracle.

Выдержка из этой ссылки на форумах Oracle:

Я только изменил scritp startWebLogic.cmd :

 set LOG4J_CONFIG_FILE=log4j.xml 
 set SAVE_JAVA_OPTIONS=%JAVA_OPTIONS% -Dlog4j.configuration=%LOG4J_CONFIG_FILE%

 @REM set SAVE_CLASSPATH=%CLASSPATH% 
 set SAVE_CLASSPATH=%CLASSPATH%;C:\Oracle\Middleware\user_projects\domains\domain\config

Таким образом, я поместил всю папку конфигурации в classpath, и в будущем я смогу использовать ее для хранениядругие файлы конфигурации библиотек (например, конфигурация oracle coherence).

Я попробовал этот подход и в другом файле свойств, и он сработал хорошо!

2 голосов
/ 12 сентября 2011

Вам нужно либо указать, где приложение должно найти свои log4j.properties, либо поместить его в путь к классу приложения. Где находится путь к классам, меняется, но в целом WEB-INF / классы должны работать. Другие варианты зависят от того, как вы развертываете приложение.

Лучшая долгосрочная стратегия - настроить систему так, чтобы вы могли изменять свойства log4j.properties в зависимости от среды. Когда вы работаете, вы не хотите, чтобы появлялась вся информация отладки. Посмотрите на ответ на этот вопрос или на этот вопрос , чтобы получить больше идей. Одна стратегия состоит в том, чтобы определить переменную в командной строке, которая будет выбрана и определяет каталог, который содержит ваши файлы конфигурации. Это работает для Tomcat, но могут быть и другие, лучшие, стратегии для Weblogic.

Не рекомендуется менять конфигурацию вашего сервера, в частности, не заменяйте log4j.jar или log4j.properties в каталогах вашего сервера. Сервер будет зависеть от версии, для которой он предназначен, которая может совпадать или не совпадать с вашей версией. Вы можете сделать все, что вам нужно, изменив разворачиваемую войну.

1 голос
/ 21 ноября 2011

Я использовал этот код:

    ClassLoader cl = this.getClass().getClassLoader();
    URL log4jCfg = cl.getResource(configFile);
    if (log4jCfg != null) {
        DOMConfigurator.configure(log4jCfg);
    }
log.info("log4j is now working on Web App.");

В моем случае мы использовали конфигурацию XML:

log4jCfg = "mylog4j.xml";

В WebLogic мы смогли разместить такой файл (mylog4j.xml), эквивалентный вашему файлу log4j.properties, по пути к домену WebLogic (специфично для домена, в котором мы развертываем). Это означает, что папка домена принадлежит пути вашего приложения. Я только что протестировал его с веб-приложениями, я не уверен, что с проектами SOA или EJB он работает так же.

0 голосов
/ 12 сентября 2011

Когда вы развертываете какое-либо приложение на любом сервере, оно должно использовать серверы log4j jar.

Так что, если вы добавили любой jar log4j в ваше приложение jar / tar / ear, удалите его и скопируйте файл log4j.propertiesв папке conf сервера, откуда сервер выбирает свои файлы конфигурации.Или просто скопируйте содержимое вашего свойства log4j в файл свойств сервера log4j.

...