Журналы запуска Tomcat - СЕРЬЕЗНО: фильтр ошибок Начать, как получить трассировку стека?

96

Когда я запускаю Tomcat, я получаю следующую ошибку:

Jun 10, 2010 5:17:25 PM org.apache.catalina.core.StandardContext start
SEVERE: Error filterStart
Jun 10, 2010 5:17:25 PM org.apache.catalina.core.StandardContext start
SEVERE: Context [/mywebapplication] startup failed due to previous errors

Кажется странным, что журналы Tomcat не включают трассировку стека. Есть ли у кого-нибудь предложение о том, как увеличить ведение журнала в Tomcat, чтобы получить трассировку стека для таких ошибок?

Benstpierre
источник
1
Я использую Guice-Servlet, и, выполнив попытку / уловку моего метода настройки для этого фреймворка, я смог поймать все исключения и повторно выбросить их после входа в систему. Мне все еще приходилось слепо отлаживать, чтобы заставить работать фильтр Guice-Servlet, но все, что добавлено к этому, похоже, просто работает.
benstpierre
1
Похоже, что стек отслеживает goto stdout, но Intellij не читает stdout для Tomcat. tomcat.apache.org/tomcat-6.0-doc/logging.html Мне нужно сделать stdout в Tomcat перенаправлением в файл, чтобы Intellij мог его просмотреть.
benstpierre

Ответы:

138

Проверьте журналы localhost_yyyy_mm_dd.logOR, localhost.yyyy-mm-dd.logкоторые создает Tomcat, обычно в них хранится информация этого типа. Я бы не ожидал, что полная трассировка стека будет сброшена до стандартного уровня.

Мэтт Би
источник
Мой экземпляр Tomcat 5.5 не записывает этот файл.
Arne Evertsson
3
До этого момента "error filterStart" преследовала мои кошмары ... БОЛЬШЕ НЕ! Ты жжешь!
Cody S
Одна из вещей, которую вы рады открыть в процессе разработки. Спасибо.
Франсиско Лозано
Мой Tomcat 6 (с настройкой по умолчанию) никогда ничего не записывает в файл, мне пришлось включить ConsoleHandler, чтобы прочитать, что пошло не так, и это записало исключения в выходной файл Catalina.
2
@mattblang взгляните на $ TOMCAT_HOME / conf / logging.properties. Настройка по умолчанию противоречит интуиции.
matt b
80

создайте файл с именем logging.properties в WEB-INF / classes со следующим содержимым:

org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler
Миша Рун
источник
Обратите внимание: если у вас нет каталога классов в WEB-INF, вы можете просто создать его, и он будет работать нормально.
Muhd
21

Tomcat регистрирует трассировку стека, но не всегда ясно, где находятся файлы журнала, когда tomcat запускается из IDE. Когда я запускаю его из IntelliJ, для CATALINA_BASEнего установлено значение ${home}/.IntelliJIdea10/system/tomcat/Unnamed_r6-idea, а файлы журнала находятся в формате [CATALINA_BASE]/logs.

Чтобы просмотреть журналы, либо найдите файлы журналов, либо отредактируйте, [CATALINA_HOME]/conf/logging.propertiesчтобы направить вывод журнала Tomcat на консоль. Ниже я добавил второй обработчик в конфигурацию tomcat по умолчанию:

 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

Теперь в выводе IntelliJ появляется полная трассировка стека:

 Dec 27, 2011 12:02:45 PM org.apache.catalina.core.StandardContext filterStart
 SEVERE: Exception starting filter filterChainProxy
 org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'filterChainProxy' is defined   at
 org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:529)
 . . .
Ассен Колов
источник
9

вам нужно скопировать файлы

cp /path/to/solr/example/lib/ext/* /path/to/tomcat/lib
cp /path/to/solr/example/resources/* /path/to/tomcat/lib // or inside extracted solr

а затем перезапустите tomcat

Туку
источник
3
ура, это меня спасло! . Также было бы неплохо посмотреть /path/to/solr/example/resources/log4j.properties и отредактировать каталог журнала
user9869932
5

Возможно, ваше приложение скомпилировано с другой JRE, чем Tomcat.

Проверьте java -versionсвой сервер, а затем скомпилируйте свой код с той же версией. У меня была ошибка, потому что моя стандартная JRE Eclipse была 1.6, а Tomcat использовал 1.5 - это не сработает.

Ренато
источник
2

В CentOS 6 и Solr 4.4.0

Мне пришлось скомпилировать несколько файлов библиотеки, чтобы исправить эту ошибку

cp ~/solr-4.4.0/example/lib/ext/* /usr/share/tomcat6/lib/
Амир Билал
источник
Это тоже решило проблему для меня. Ubuntu 14.04, solr 4.8.1 и tomcat 7.
cjungel
2

Обычно информация о проблеме находится в localhost. [Дата] .log. Но иногда в этом журнале ничего нет. Это может произойти, если есть перепутанная конфигурация проекта (над ним долго работали несколько разработчиков и каждый добавил что-то от себя). Я столкнулся с этой проблемой БЕЗ какой-либо информации в журнале. Довольно быстрый и надежный подход:

  1. Попробуйте удалить из web.xml все, что может вызвать проблемы. Вы даже можете удалить все, кроме тега. Если приложение по-прежнему не может быть развернуто - продолжайте.

  2. Удалите все дескрипторы * .xml из WEB-INF / classes. Если приложение не может быть развернуто - продолжайте.

  3. Удалите всю конфигурацию ведения журнала, которую вы можете найти в своей войне (logging.properties, log4j.properties). Попробуйте развернуть. На этом этапе я получил более информативную ошибку, но развертывание все равно не удалось.

После поиска в Google для этой ошибки я обнаружил, что проект включает старую версию xerces, которая конфликтует с версией Tomcat (которая была более новой) и не требует развертывания приложения. После обновления xerces в веб-приложении все стало нормально.

Геннадий Николаев
источник
1

Настроить ведение журнала log4j для Tomcat довольно просто. Следующее цитируется из http://tomcat.apache.org/tomcat-5.5-doc/logging.html :

  1. Создайте файл log4j.properties со следующим содержимым и сохраните его в common / classes.

              log4j.rootLogger=DEBUG, R 
              log4j.appender.R=org.apache.log4j.RollingFileAppender 
              log4j.appender.R.File=${catalina.home}/logs/tomcat.log 
              log4j.appender.R.MaxFileSize=10MB 
              log4j.appender.R.MaxBackupIndex=10 
              log4j.appender.R.layout=org.apache.log4j.PatternLayout 
              log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
  2. Загрузите Log4J (v1.2 или новее) и поместите jar-файл log4j в папку $ CATALINA_HOME / common / lib.

  3. Загрузите Commons Logging и поместите commons-logging-xyzjar (не commons-logging-api-xyzjar) в $ CATALINA_HOME / common / lib с jar-файлом log4j.
  4. Запустить Tomcat

Вы также можете посмотреть http://wiki.apache.org/tomcat/FAQ/Logging

Томми
источник
Приведет ли это к тому, что исключения развертывания действительно будут правильно регистрироваться?
benstpierre
Да. Я использовал именно этот метод, чтобы найти причины проблем во время развертывания.
Tommi
1
Извините, но файл журнала недоступен при уровне журнала DEBUG. Он действительно содержит несколько исключений, которые, похоже, не имеют ничего общего с проблемой - я подозреваю, что это проблема Struts в моем случае.
Arne Evertsson
1

если кто-то получает сообщение об ошибке, например SEVERE: Error filterStart 29 апреля 2013 г. 16:49:20 org.apache.catalina.core.StandardContext startInternal СЕРЬЕЗНО: запуск контекста [/ TraceMW] завершился неудачно из-за предыдущих ошибок

затем проверьте, содержит ли ваш каталог tomcat / lib файл cors-filter-1.5.jar или нет. Если у вас есть точка, вы получите ошибку выше, и приложение ur не будет доступно.

Итак, мне просто удалось скопировать файл jar из другой папки tomcat, и я не получил вышеупомянутую ошибку позже.

Прашанти
источник
1

У меня тоже была та же ошибка, и я много боролся, чтобы исправить эту проблему. Потратил немного времени на поиск в Google и нашел следующее решение, и моя проблема была решена.

проблема была связана с отсутствием библиотек Struts2 в пути развертывания. Большинство людей могут помещать библиотеки для компиляции и, как правило, забывать подключать необходимые библиотеки для выполнения. Поэтому я добавил те же библиотеки в сборку веб-развертывания, и проблема была ВЫКЛЮЧЕНА.

user2682165
источник
1

У меня такая же проблема, я не могу запустить приложение после его развертывания в Tomcat. Но как только я копирую набор jar-файлов Struts в каталог CATALINA_HOME \ lib (Tomcat dir), он разрешается. Вам не обязательно иметь эти jar-файлы в вашем WEB_INF \ lib, но они должны быть в вашем пути сборки.

общие-fileupload-1.2.1.jar

общие-io-1.3.2.jar

freemarker-2.3.16.jar

javassist-3.11.0.GA.jar

struts2-соглашение-плагин-2.2.1.jar

struts2-core-2.2.1.jar

xwork-core-2.2.1.jar

Виджай
источник
0

Просто хотел внести свой вклад, потратив последний час на почти идентичную проблему. Мое решение заключалось в том, что каким-то образом наши приложения .jar были повреждены, поэтому размещение jar-файла с нашего сервера разработки обеспечило исправление.

Мэтью
источник
0

У меня была аналогичная проблема. Совет Ренато мне помог. Я использовал старую версию файлов классов java (в папке WEB-INF / classes), и проблема исчезла. Значит, должно было быть несовпадение версии компилятора.

Прасанна HR
источник
0

Это помогло мне: просто удалите все библиотеки, а затем скомпилируйте и запустите. Это побудит их ошибки в вашем проекте подтвердить. После применения библиотек перезапустите проект.

Гулам Мохаммед Тахер
источник
0

Обычно версия сервера JDK будет ниже, чем развернутое приложение (построенное с более высокой версией jdk)

user1114134
источник
-1

Выполните следующую команду, чтобы показать журналы каталины на терминале ---

sh start-camunda.sh; tail -f server/apache-tomcat-8.0.24/logs/catalina.out
Вивек Гарг
источник