Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Log4j в Spring mvc / 9 сообщений из 9, страница 1 из 1
11.08.2013, 22:10:54
    #38362498
st4j
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Log4j в Spring mvc
Доброго времени суток.

Помогите разобраться с ошибкой.

Веб приложение на spring mvc и крутится на томкате 7. Библиотеки log4j, slf4j и lombok добавлены. Но консоль выдаёт

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
INFO: Suspicious url pattern: "/**" in context [] - see section SRV.11.2 of the Servlet specification
log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
[2013-08-11 09:06:29,753] Artifact web:war exploded: Artifact is deployed successfully
авг 11, 2013 9:06:30 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\Program Files (x86)\apache-tomcat-7.0.40\webapps\manager
авг 11, 2013 9:06:30 PM org.apache.jasper.compiler.TldLocationsCache tldScanJar
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.



Некоторые участки с "INFO" отлично проходят как видно из лога, но на не инициализацию log4j "матюкается".

Буду премного благодарен.
...
Рейтинг: 0 / 0
12.08.2013, 19:12:58
    #38363735
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Log4j в Spring mvc
Настройка tomcat на использование log4j описана в штаной документации . Обратите внимание, куда именно кладутся необходимые причиндалы.
Так вот, в любом раскладе, приложение не может содержать библиотек log4j, т.к. они уже грузится из common-/shared-classpath.
Два против одного, что именно дублирование библиотек вызывает ваше "No appenders could be found".
...
Рейтинг: 0 / 0
12.08.2013, 21:27:35
    #38363856
vimba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Log4j в Spring mvc
st4j,

А покажите log4j.properties или log4.xml, как Вы настроили логи для пакетов спринга и по какому пути эти файлы попали в вебприложение.
...
Рейтинг: 0 / 0
12.08.2013, 21:36:31
    #38363863
vimba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Log4j в Spring mvc
Basil A. SidorovТак вот, в любом раскладе, приложение не может содержать библиотек log4j, т.к. они уже грузится из common-/shared-classpath.

Это не мешает приложениям дублировать библиотеки - класслоадер в томкате устроен, так что всё что лежит в папке WEB-INF/lib имеет высший приоритет чем в расшаренных папках и класслоадер приложения сначала ищет классы в соей папке и только если не нашел нужного класса делигирует загрузку по цепочке common класслоадеру.

tomcat documentation http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html
As mentioned above, the web application class loader diverges from the default Java 2 delegation model (in accordance with the recommendations in the Servlet Specification, version 2.4, section 9.7.2 Web Application Classloader). When a request to load a class from the web application's WebappX class loader is processed, this class loader will look in the local repositories first, instead of delegating before looking.
...
Рейтинг: 0 / 0
13.08.2013, 16:57:15
    #38365066
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Log4j в Spring mvc
vimbaЭто не мешает приложениям дублировать библиотеки - класслоадер в томкате устроен, так что всё что лежит в папке WEB-INF/lib имеет высший приоритет чем в расшаренныхДавайте вы сначала дочитаете котовские мануалы по загрузчикам до деления на "серверный", "разделяемый" и "прикладной", подумаете, в каком порядке они работают, а потом почитаете, что такое "настроить томкат для использования log4j" и какой загрузчик обязан при этом использоваться.
...
Рейтинг: 0 / 0
13.08.2013, 23:06:13
    #38365425
vimba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Log4j в Spring mvc
Basil A. SidorovДавайте вы сначала дочитаете котовские мануалы по загрузчикам до деления на "серверный", "разделяемый" и "прикладной", подумаете, в каком порядке они работают
Нет уж только после Вас:
When a web application needs to load a class, the request first comes to the web
application class loader, which is responsible (as described above) for loading the
classes in the web application's WEB-INF/classes and WEB-INF/lib folders.
This class loader first delegates to the System class loader to allow the delegation
hierarchy to locate any core Java classes. If the requested class cannot be found,
then the web application class loader attempts to locate the class within its own
repositories. If the class is still not found, it will delegate to the Common class
loader, or to the Shared class loader if it is installed.
...
Рейтинг: 0 / 0
14.08.2013, 16:33:11
    #38366473
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Log4j в Spring mvc
vimbaНет уж только после Вас:Ещё раз: прочитайте про настройку log4j-логирования на сервере .
Там, видимо специально для таких как вы, даже сказано примерно следующее: "если вам нужно использовать log4j только в приложении - не парьтесь и закиньте jar-ник в WEB-INF/lib".
...
Рейтинг: 0 / 0
14.08.2013, 17:10:09
    #38366538
vimba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Log4j в Spring mvc
Эх раз ещё раз, ещё много-много-много раз.

Basil A. SidorovТак вот, в любом раскладе, приложение не может содержать библиотек log4j, т.к. они уже грузится из common-/shared-classpath.
То что log4j может грузится из common-/shared-classpath, никак не мешает мне иметь для каждого приложения свою версию библиотеки log4j.
Допустим сценарий:
1. Задеплоено приложение "A" без библиотеки log4j в WEB-INF/lib, оно рассчитывает подхватить её из общих либ, допустим так и происходит, дело дошло до shared заррузчика(если он настроен) и он загрузил классы log4j для "A".
2. Теперь деплоется приложение "B", которое содержит в WEB-INF/lib библиотеку log4j, ну допустим версия в shared не устраивает и "B" нужен более новый log4j а может и наоборот более старый. Так вот приложение "B" получит свою версию log4j из папки WEB-INF/lib несмотря то что по требованию приложения "A" shared загрузчик уже подгрузил классы из другой либы в память, то есть разные версии классов log4j будут прекрасно сосуществовать в памяти.

Поэтому ещё раз обновите в памяти иерархию класслоадеров в томкат, Вам это явно не помешает.
...
Рейтинг: 0 / 0
14.08.2013, 17:20:51
    #38366559
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Log4j в Spring mvc
vimbaПоэтому ещё раз обновите в памяти иерархию класслоадеров в томкат, Вам это явно не помешает.А теперь повторите на бис, но предварительно настройте log4j для использования самим котярой.
Про использование разных версий log4j - тоже знатная трава, хотя и простительная программисту.

P.S. log4j.xml с использованием AsyncAppender могу дать готовый.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Log4j в Spring mvc / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]