Dzienniki uruchamiania Tomcat - POWAŻNE: Filtr błędówZacznij, jak uzyskać ślad stosu?


96

Po uruchomieniu Tomcata pojawia się następujący błąd:

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

Wydaje się dziwne, że dzienniki Tomcat nie zawierały śladu stosu. Czy ktoś ma sugestię, jak zwiększyć logowanie w Tomcat, aby uzyskać ślady stosu dla takich błędów?


1
Używam Guice-Servlet i wykonując próbę / złapanie wokół mojej metody konfiguracji dla tego frameworka, byłem w stanie złapać wszystkie wyjątki i wyrzucić je ponownie po zalogowaniu się. Nadal musiałem ślepo debugować, aby filtr Guice-Servlet działał, ale wszystko, co do tego dodano, wydaje się po prostu działać.
benstpierre

1
Wygląda na to, że ślady stosu przechodzą na standardowe wyjście, ale Intellij nie czyta standardowego wyjścia dla Tomcat. tomcat.apache.org/tomcat-6.0-doc/logging.html Potrzebuję przekierowania standardowego w tomcat do pliku, aby Intellij mógł go wyświetlić.
benstpierre

Odpowiedzi:


138

Sprawdź dzienniki localhost_yyyy_mm_dd.logOR, localhost.yyyy-mm-dd.logktóre tworzy Tomcat, zazwyczaj przechowują one tego typu informacje. Nie spodziewałbym się, że pełny ślad stosu zostanie zrzucony do standardu.


Moja instancja Tomcat 5.5 nie zapisuje tego pliku.
Arne Evertsson

3
Do tej pory „error filterStart” nękało moje koszmary… JUŻ NIE! Rządzisz!
Cody S

Jedną z tych rzeczy, które z przyjemnością odkrywasz podczas programowania. Dzięki wielkie.
Francisco Lozano,

Mój Tomcat 6 (z domyślną konfiguracją) nigdy nie zapisuje niczego do pliku, musiałem włączyć ConsoleHandler, aby przeczytać, co poszło nie tak, a to zapisało wyjątki w pliku wyjściowym Cataliny.

2
@mattblang spójrz na $ TOMCAT_HOME / conf / logging.properties. Domyślna konfiguracja jest sprzeczna z intuicją.
mat b

80

utwórz plik o nazwie logging.properties w WEB-INF / classes z następującą zawartością:

org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler

Zauważ, że jeśli nie masz katalogu klas w WEB-INF, możesz go po prostu utworzyć i będzie działał dobrze.
Muhd

21

Tomcat rejestruje śledzenie stosu, ale nie zawsze jest jasne, gdzie znajdują się pliki dziennika, kiedy tomcat jest uruchamiany z IDE. Kiedy uruchamiam go z IntelliJ, CATALINA_BASEjest ustawiony na ${home}/.IntelliJIdea10/system/tomcat/Unnamed_r6-idea, a pliki dziennika są w [CATALINA_BASE]/logs.

Aby wyświetlić dzienniki, zlokalizuj pliki dziennika lub edytuj, [CATALINA_HOME]/conf/logging.propertiesaby skierować dane wyjściowe programu Tomcat Logger do konsoli. Poniżej dodałem drugi handler do domyślnej konfiguracji 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

Teraz pełny ślad stosu pojawia się w danych wyjściowych 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

musisz skopiować pliki

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

a następnie uruchom ponownie tomcat


3
tak, to mnie uratowało! . Dobrym pomysłem byłoby również przejrzenie /path/to/solr/example/resources/log4j.properties i zmodyfikowanie katalogu dziennika
user9869932

5

Być może Twoja aplikacja została skompilowana w innym środowisku JRE niż Tomcat.

Sprawdź java -versionna serwerze, a następnie skompiluj swój kod w tej samej wersji. Wystąpił błąd, ponieważ moje standardowe środowisko JRE Eclipse to 1.6, a Tomcat użył 1.5 - to nie może działać.


2

W CentOS 6 i Solr 4.4.0

Musiałem skompilować kilka plików lib, aby rozwiązać ten błąd

cp ~/solr-4.4.0/example/lib/ext/* /usr/share/tomcat6/lib/

To również rozwiązało problem. Ubuntu 14.04 i solr 4.8.1 i tomcat 7.
cjungel

2

Zazwyczaj informacja o problemie znajduje się w localhost. [Data] .log. Ale czasami w tym dzienniku nie ma nic. Może się to zdarzyć, jeśli jest pomieszana konfiguracja projektu (kilku programistów długo nad tym pracowało i każdy dodał coś od siebie). Napotkałem ten problem BEZ żadnych informacji w logu. Raczej szybkie i solidne podejście:

  1. Spróbuj usunąć wszystko, co może powodować problemy z pliku web.xml. Możesz nawet usunąć wszystko oprócz tagu. Jeśli nadal nie można wdrożyć aplikacji - kontynuuj.

  2. Usuń każdy deskryptor * .xml z WEB-INF / classes. Jeśli aplikacji nie można wdrożyć - kontynuuj.

  3. Usuń całą konfigurację logowania, którą możesz znaleźć na swojej wojnie (logging.properties, log4j.properties). Spróbuj wdrożyć. Na tym etapie mam więcej informacji o błędzie, ale wdrożenie nadal się nie powiodło.

Po wygooglowaniu tego błędu dowiedziałem się, że projekt zawiera starą wersję xerces, która kolidowała z wersją Tomcata (która była nowsza) i nie umożliwiała wdrożenia aplikacji. Po aktualizacji kserokopii w aplikacji internetowej wszystko poszło dobrze.


1

Konfiguracja logowania log4j dla Tomcat jest dość prosta. Oto cytat z http://tomcat.apache.org/tomcat-5.5-doc/logging.html :

  1. Utwórz plik o nazwie log4j.properties z następującą zawartością i zapisz go w pliku 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. Pobierz Log4J (v1.2 lub nowsza) i umieść jar log4j w $ CATALINA_HOME / common / lib.

  3. Pobierz Commons Logging i umieść plik commons-logging-xyzjar (not commons-logging-api-xyzjar) w katalogu $ CATALINA_HOME / common / lib z jar log4j.
  4. Uruchom Tomcat

Możesz również zajrzeć na http://wiki.apache.org/tomcat/FAQ/Logging


Czy to spowoduje, że wyjątki wdrażania będą faktycznie poprawnie rejestrowane?
benstpierre

Tak. Użyłem tej dokładnej metody, aby znaleźć przyczyny problemów podczas wdrażania.
Tommi

1
Przykro mi, ale plik dziennika jest nieprzenikniony z poziomem dziennika DEBUG. Zawiera kilka wyjątków, które wydają się nie mieć nic wspólnego z problemem - podejrzewam, że w moim przypadku jest to problem Struts.
Arne Evertsson

1

jeśli ktoś otrzymuje błąd, taki jak POWAŻNE: Filtr błędu Start 29 kwietnia 2013 16:49:20 org.apache.catalina.core.StandardContext startInternal SEVERE: Context [/ TraceMW] uruchomienie nie powiodło się z powodu poprzednich błędów

następnie sprawdź, czy twój katalog tomcat / lib zawiera cors-filter-1.5.jar czy nie. jeśli nie masz u, pojawi się powyższy błąd, a Twoja aplikacja nie będzie dostępna.

Tak więc właśnie udało mi się skopiować plik jar z innego folderu tomcat i nie otrzymałem później wspomnianego błędu.


1

Ja również dostałem ten sam błąd i bardzo się starałem rozwiązać ten problem. Spędziłem trochę czasu na przeszukiwaniu Google i znalazłem następujące rozwiązanie, a mój problem został rozwiązany.

problem wynikał z braku bibliotek Struts2 w ścieżce wdrażania. Większość ludzi może umieszczać biblioteki do kompilacji i zapomnieć o dołączaniu bibliotek wymaganych w czasie wykonywania. Więc dodałem te same biblioteki w zestawie wdrażania sieci Web i problem był WYŁĄCZONY.


1

Mam ten sam problem, nie mogę uruchomić aplikacji po jej wdrożeniu w tomcat. Ale po skopiowaniu zestawu słoików Struts do katalogu CATALINA_HOME \ lib (katalog Tomcat) problem został rozwiązany. Nie musisz mieć tych słoików w swoim WEB_INF \ lib, ale musisz je mieć w swojej ścieżce kompilacji.

commons-fileupload-1.2.1.jar

commons-io-1.3.2.jar

freemarker-2.3.16.jar

javassist-3.11.0.GA.jar

Struts2-convention-plugin-2.2.1.jar

struts2-core-2.2.1.jar

xwork-core-2.2.1.jar


0

Po prostu chciałem wnieść swój wkład po spędzeniu ostatniej godziny nad prawie identycznym problemem. Moim rozwiązaniem było to, że w jakiś sposób nasze aplikacje .jar zostały uszkodzone, więc umieszczenie pliku jar z naszego serwera deweloperskiego zapewniło poprawkę.


0

Miałem podobny problem. Wskazówka Renato zadziałała dla mnie. Użyłem starszej wersji plików klas java (w folderze WEB-INF / classes) i problem zniknął. Tak więc powinna to być niezgodność wersji kompilatora.


0

To załatwiło sprawę: po prostu usuń wszystkie biblioteki, a następnie skompiluj i uruchom. To podpowiedziałoby, że są błędy w twoim projekcie. Uruchom ponownie projekt po zastosowaniu bibliotek.


0

Ogólnie wersja JDK serwera będzie niższa niż wdrożona aplikacja (zbudowana z wyższą wersją jdk)


-1

Uruchom następujące polecenie, aby wyświetlić dzienniki Catalina na terminalu ---

sh start-camunda.sh; tail -f server/apache-tomcat-8.0.24/logs/catalina.out
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.