Log startup Tomcat - PULUH: Filter kesalahanMulai cara mendapatkan pelacakan tumpukan?

96

Ketika saya memulai Tomcat saya mendapatkan kesalahan berikut:

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

Tampaknya aneh bahwa log untuk Tomcat tidak menyertakan pelacakan tumpukan. Apakah ada yang punya saran tentang cara meningkatkan logging di Tomcat untuk mendapatkan jejak tumpukan untuk kesalahan seperti ini?

benstpierre
sumber
1
Saya menggunakan Guice-Servlet dan dengan melakukan coba / tangkap di sekitar metode penyiapan saya untuk kerangka kerja ini, saya dapat menangkap semua pengecualian dan meluncurkannya kembali setelah masuk sendiri. Saya masih harus men-debug secara membabi buta agar filter Guice-Servlet berfungsi tetapi apa pun yang ditambahkan ke sana tampaknya hanya berfungsi.
benstpierre
1
Tampaknya jejak tumpukan goto stdout tetapi Intellij tidak membaca stdout untuk Tomcat. tomcat.apache.org/tomcat-6.0-doc/logging.html Saya perlu membuat stdout di tomcat redirect ke file sehingga Intellij dapat melihatnya.
benstpierre

Jawaban:

138

Periksa localhost_yyyy_mm_dd.logOR localhost.yyyy-mm-dd.loglog yang dibuat Tomcat, ini biasanya menyimpan jenis info tersebut. Saya tidak berharap stacktrace penuh dibuang ke standar.

matt b
sumber
Contoh saya dari Tomcat 5.5 tidak menulis file itu.
Arne Evertsson
3
Sampai saat ini "error filterStart" telah mengganggu mimpi buruk saya ... TIDAK LAGI! Kamu keren!
Cody S
Salah satu hal yang Anda senang temukan selama pengembangan. Terima kasih banyak.
Francisco Lozano
Tomcat 6 saya (dengan pengaturan default) tidak pernah menulis apa pun ke file, saya harus mengaktifkan ConsoleHandler untuk membaca apa yang salah, dan itu menulis pengecualian di file keluaran Catalina.
2
@mattblang lihat $ TOMCAT_HOME / conf / logging.properties. Pengaturan default berlawanan dengan intuisi.
matt b
80

buat file bernama logging.properties di WEB-INF / kelas dengan konten berikut:

org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler
Micha Roon
sumber
Perhatikan bahwa jika Anda tidak memiliki direktori kelas di WEB-INF, Anda dapat membuatnya dan itu akan berfungsi dengan baik.
Muhd
21

Tomcat mencatat stacktrace, tetapi tidak selalu jelas di mana file log tersebut berada, ketika tomcat dijalankan dari IDE. Ketika saya memulainya dari IntelliJ, CATALINA_BASEdiatur ke ${home}/.IntelliJIdea10/system/tomcat/Unnamed_r6-idea, dan file log masuk [CATALINA_BASE]/logs.

Untuk melihat log, baik cari file log, atau edit [CATALINA_HOME]/conf/logging.propertiesuntuk mengarahkan keluaran logger tomcat ke konsol. Di bawah ini saya menambahkan penangan kedua ke konfigurasi tomcat default:

 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

Sekarang stacktrace lengkap muncul di output 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)
 . . .
Assen Kolov
sumber
9

Anda perlu menyalin file

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

dan kemudian restart tomcat

tuku
sumber
3
yay, ini menyelamatkan saya! . Juga merupakan ide yang baik untuk melihat properti /path/to/solr/example/resources/log4j.properties dan edit direktori log Anda
user9869932
5

Mungkin aplikasi Anda dikompilasi dengan JRE yang berbeda dari Tomcat.

Periksa java -versiondi server Anda dan kemudian kompilasi kode Anda dengan versi yang sama. Saya mengalami kesalahan karena JRE standar Eclipse saya adalah 1,6 dan Tomcat menggunakan 1,5 - ini tidak dapat berfungsi.

Renato
sumber
2

Di CentOS 6 dan Solr 4.4.0

Saya harus menyusun beberapa file lib untuk mengatasi kesalahan ini

cp ~/solr-4.4.0/example/lib/ext/* /usr/share/tomcat6/lib/
Amir Bilal
sumber
Ini juga memecahkan masalah saya. Ubuntu 14.04 dan solr 4.8.1 dan tomcat 7.
cjungel
2

Biasanya ada informasi tentang masalah tersebut di localhost. [Date] .log. Tapi terkadang tidak ada apa-apa di log ini. Ini dapat terjadi jika ada konfigurasi proyek yang kacau (beberapa pengembang mengerjakannya untuk waktu yang lama dan masing-masing menambahkan sesuatu dari dirinya sendiri). Saya menghadapi masalah ini TANPA informasi apa pun di log. Pendekatan yang agak cepat dan kuat:

  1. Coba hapus semua yang dapat menyebabkan masalah apa pun dari web.xml. Anda bahkan dapat menghapus semuanya kecuali tag. Jika aplikasi masih tidak dapat diterapkan - lanjutkan.

  2. Hapus setiap deskriptor * .xml dari WEB-INF / class. Jika aplikasi tidak dapat diterapkan - lanjutkan.

  3. Hapus semua konfigurasi logging yang dapat Anda temukan dalam perang Anda (logging.properties, log4j.properties). Coba terapkan. Pada langkah ini saya mendapatkan kesalahan yang lebih informatif, tetapi penerapan masih gagal.

Setelah googling untuk kesalahan ini, saya menemukan bahwa proyek tersebut menyertakan versi lama xerces, yang bentrok dengan versi Tomcat (yang lebih baru) dan bukan aplikasi yang akan diterapkan. Setelah upgrade xerces di aplikasi web semuanya menjadi baik-baik saja.

Gennady Nikolaev
sumber
1

Menyiapkan log4j logging untuk Tomcat cukup sederhana. Berikut ini dikutip dari http://tomcat.apache.org/tomcat-5.5-doc/logging.html :

  1. Buat file bernama log4j.properties dengan konten berikut dan simpan ke dalam / kelas umum.

              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. Download Log4J (v1.2 atau lebih baru) dan tempatkan tabung log4j di $ CATALINA_HOME / common / lib.

  3. Unduh Commons Logging dan tempatkan commons-logging-xyzjar (bukan commons-logging-api-xyzjar) di $ CATALINA_HOME / common / lib dengan tabung log4j.
  4. Mulai Tomcat

Anda mungkin juga ingin melihat http://wiki.apache.org/tomcat/FAQ/Logging

Tommi
sumber
Apakah ini akan menyebabkan pengecualian penerapan untuk mencatat log dengan benar?
benstpierre
Iya. Saya telah menggunakan metode yang tepat ini menemukan penyebab masalah selama penerapan.
Tommi
1
Maaf, file log tidak bisa ditembus dengan level log DEBUG. Itu memang mengandung beberapa pengecualian yang tampaknya tidak ada hubungannya dengan masalah tersebut - yang saya curigai sebagai masalah Struts dalam kasus saya.
Arne Evertsson
1

jika ada yang mendapatkan error seperti SEVERE: Error filterStart 29 Apr 2013 16:49:20 org.apache.catalina.core.StandardContext startInternal SEVERE: Context [/ TraceMW] startup gagal karena error sebelumnya

lalu periksa apakah direktori tomcat / lib Anda berisi cors-filter-1.5.jar atau tidak. jika Anda memiliki Anda akan mendapatkan kesalahan di atas dan aplikasi Anda tidak akan tersedia.

Jadi, saya baru saja berhasil menyalin file jar dari folder tomcat lain dan saya tidak mendapatkan kesalahan yang disebutkan di atas nanti.

Prasanthi
sumber
1

Saya juga mendapatkan kesalahan yang sama dan berjuang keras untuk memperbaiki masalah ini. Menghabiskan sedikit waktu untuk mencari di Google dan menemukan solusi berikut dan masalah saya teratasi.

masalah ini karena, Perpustakaan Struts2 hilang di jalur penerapan. Sebagian besar orang mungkin menempatkan perpustakaan untuk kompilasi dan cenderung lupa untuk melampirkan perpustakaan yang diperlukan untuk waktu proses. Jadi saya menambahkan perpustakaan yang sama di perakitan penerapan web, dan masalahnya MATI.

pengguna2682165
sumber
1

Saya mendapat masalah yang sama, tidak dapat memulai aplikasi setelah diterapkan di kucing jantan. Tapi, setelah saya menyalin set Jars Struts ke direktori CATALINA_HOME \ lib (Tomcat dir) itu diselesaikan. Anda tidak perlu memiliki toples ini di WEB_INF \ lib Anda, tetapi Anda harus memilikinya di Build Path Anda.

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

Vijay
sumber
0

Hanya ingin berkontribusi setelah menghabiskan satu jam terakhir untuk masalah yang hampir sama. Solusi saya adalah entah bagaimana aplikasi kami .jar rusak, jadi menempatkan toples dari server dev kami memberikan perbaikan.

korek api
sumber
0

Saya memiliki masalah serupa. Tip Renato berhasil untuk saya. Saya menggunakan versi file kelas java yang lebih lama (di bawah folder WEB-INF / kelas) dan masalahnya hilang. Jadi, seharusnya versi compiler tidak cocok.

Prasanna HR
sumber
0

Ini melakukan trik untuk saya: Hapus saja semua pustaka dan kemudian kompilasi dan jalankan. Ini akan meminta kesalahan mereka dalam konfirmasi proyek Anda. Jalankan kembali proyek setelah menerapkan perpustakaan.

Ghulam Mohammed Taher
sumber
0

Umumnya versi JDK Server akan lebih rendah daripada aplikasi yang diterapkan (dibuat dengan versi jdk yang lebih tinggi)

pengguna1114134
sumber
-1

Jalankan perintah Mengikuti untuk menampilkan log katalina di terminal ---

sh start-camunda.sh; tail -f server/apache-tomcat-8.0.24/logs/catalina.out
Vivek Garg
sumber