บันทึกการเริ่มต้น Tomcat - SEVERE: ตัวกรองข้อผิดพลาดเริ่มวิธีรับสแต็กแทร็ก?


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 เพื่อรับสแต็กเทรซสำหรับข้อผิดพลาดเช่นนี้หรือไม่?


1
ฉันใช้ Guice-Servlet และด้วยการลอง / จับวิธีการตั้งค่าสำหรับกรอบงานนี้ฉันสามารถจับข้อยกเว้นทั้งหมดและสร้างใหม่หลังจากเข้าสู่ระบบด้วยตัวเอง ฉันยังคงต้องดีบักสุ่มสี่สุ่มห้าเพื่อให้ตัวกรองของ Guice-Servlet ทำงานได้ แต่สิ่งที่เพิ่มเข้ามานั้นดูเหมือนจะใช้งานได้
benstpierre

1
ดูเหมือนว่าสแต็กเทรซไปที่ 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 สร้างขึ้นซึ่งโดยทั่วไปจะเก็บข้อมูลประเภทนั้นไว้ ฉันไม่คาดหวังว่า stacktrace ทั้งหมดจะถูกทิ้งให้เป็นมาตรฐาน


อินสแตนซ์ Tomcat 5.5 ของฉันไม่ได้เขียนไฟล์นั้น
Arne Evertsson

3
จนถึงขณะนี้ "error filterStart" ทำให้ฝันร้ายของฉันเกิดขึ้น ... ไม่นาน! คุณร็อค!
Cody S

สิ่งหนึ่งที่คุณดีใจที่ได้ค้นพบระหว่างการพัฒนา ขอบคุณมาก.
Francisco Lozano

Tomcat 6 ของฉัน (พร้อมการตั้งค่าเริ่มต้น) ไม่เคยเขียนอะไรลงในไฟล์ฉันต้องเปิด ConsoleHandler เพื่ออ่านสิ่งที่ผิดพลาดและนั่นก็เขียนข้อยกเว้นในไฟล์เอาต์พุต Catalina

2
@mattblang ดูที่ $ TOMCAT_HOME / conf / logging.properties การตั้งค่าเริ่มต้นนั้นใช้งานง่าย
matt b

80

สร้างไฟล์ชื่อ logging.properties ใน WEB-INF / คลาสที่มีเนื้อหาต่อไปนี้:

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

โปรดทราบว่าหากคุณไม่มีไดเร็กทอรีคลาสใน WEB-INF คุณสามารถสร้างไดเร็กทอรีได้และจะใช้งานได้ดี
Muhd

21

Tomcat บันทึก stacktrace แต่ไม่ชัดเจนเสมอไปว่าไฟล์บันทึกอยู่ที่ไหนเมื่อ tomcat เริ่มต้นจาก IDE เมื่อฉันเริ่มจาก IntelliJ CATALINA_BASEถูกตั้งค่าเป็น${home}/.IntelliJIdea10/system/tomcat/Unnamed_r6-ideaและล็อกไฟล์อยู่ใน[CATALINA_BASE]/logs.

หากต้องการดูบันทึกให้ค้นหาไฟล์บันทึกหรือแก้ไข[CATALINA_HOME]/conf/logging.propertiesเพื่อกำหนดเอาต์พุต Tomcat logger ไปยังคอนโซล ด้านล่างฉันได้เพิ่มตัวจัดการที่สองในการกำหนดค่า 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

ตอนนี้ stacktrace แบบเต็มปรากฏในเอาต์พุต 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

5

บางทีแอปพลิเคชันของคุณอาจรวบรวมด้วย JRE ที่แตกต่างจาก Tomcat

ตรวจสอบjava -versionเซิร์ฟเวอร์ของคุณจากนั้นรวบรวมโค้ดของคุณด้วยเวอร์ชันเดียวกัน ฉันมีข้อผิดพลาดเนื่องจาก Eclipse มาตรฐาน JRE ของฉันคือ 1.6 และ Tomcat ใช้ 1.5 ซึ่งไม่สามารถใช้งานได้


2

ใน CentOS 6 และ Solr 4.4.0

ฉันต้องคอมไพล์ไฟล์ lib เพื่อรับข้อผิดพลาดนี้

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 / คลาส หากไม่สามารถใช้งานแอปพลิเคชันได้ให้ดำเนินการต่อ

  3. ลบคอนฟิกูเรชันการบันทึกทั้งหมดที่คุณพบใน war ของคุณ (logging.properties, log4j.properties) ลองปรับใช้ ในขั้นตอนนี้ฉันพบข้อผิดพลาดในการให้ข้อมูลเพิ่มเติม แต่การปรับใช้ยังคงล้มเหลว

หลังจาก googling สำหรับข้อผิดพลาดนี้ฉันพบว่าโครงการมี xerces เวอร์ชันเก่าซึ่งขัดแย้งกับเวอร์ชันของ Tomcat (ซึ่งใหม่กว่า) และไม่มีแอปพลิเคชันที่จะปรับใช้ หลังจากอัปเกรด xerces ในเว็บแอปพลิเคชันทุกอย่างก็เรียบร้อยดี


1

การตั้งค่าการบันทึก log4j สำหรับ Tomcat นั้นค่อนข้างง่าย ต่อไปนี้ยกมาจากhttp://tomcat.apache.org/tomcat-5.5-doc/logging.html :

  1. สร้างไฟล์ชื่อ log4j.properties โดยมีเนื้อหาต่อไปนี้และบันทึกลงใน common / class

              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 เมษายน 2556 16:49:20 น. org.apache.catalina.core.StandardContext startInternal SEVERE: Context [/ TraceMW] การเริ่มต้นล้มเหลวเนื่องจากข้อผิดพลาดก่อนหน้านี้

จากนั้นโปรดตรวจสอบว่าไดเร็กทอรี tomcat / lib ของคุณมีcors-filter-1.5.jar หรือไม่หรือไม่ หากคุณ dot มีคุณจะได้รับข้อผิดพลาดข้างต้นและแอปพลิเคชัน ur จะไม่สามารถใช้งานได้

ดังนั้นฉันเพิ่งจัดการเพื่อคัดลอกไฟล์ jar จากโฟลเดอร์ tomcat อื่นและฉันไม่ได้รับข้อผิดพลาดดังกล่าวข้างต้นในภายหลัง


1

ฉันได้รับข้อผิดพลาดเดียวกันและพยายามอย่างมากในการแก้ไขปัญหานี้ ใช้เวลาอย่างเงียบ ๆ ในการค้นหา Google และพบวิธีแก้ไขปัญหาต่อไปนี้และปัญหาของฉันได้รับการแก้ไขแล้ว

ปัญหาเกิดจากไม่มี Struts2 Libraries ในเส้นทางการปรับใช้ คนส่วนใหญ่อาจวางไลบรารีไว้เพื่อรวบรวมและมักจะลืมแนบไลบรารีที่จำเป็นสำหรับรันไทม์ ดังนั้นฉันจึงเพิ่มไลบรารีเดียวกันในแอสเซมบลีการปรับใช้เว็บและปัญหาคือปิด


1

ฉันประสบปัญหาเดียวกันไม่สามารถเริ่มแอปพลิเคชันได้เมื่อมีการใช้งานใน Tomcat แต่เมื่อฉันคัดลอกชุด Struts ของขวดลงในไดเรกทอรี CATALINA_HOME \ lib (Tomcat dir) มันจะได้รับการแก้ไข คุณไม่จำเป็นต้องมีไหเหล่านี้ใน WEB_INF \ lib ของคุณ แต่คุณต้องมีใน Build Path ของคุณ

คอมมอนส์ 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

แค่อยากจะมีส่วนร่วมหลังจากใช้เวลาหนึ่งชั่วโมงที่แล้วกับปัญหาที่เกือบจะเหมือนกัน วิธีแก้ปัญหาของฉันคือแอปพลิเคชัน. jar ของเราเสียหายดังนั้นการวาง jar จากเซิร์ฟเวอร์ dev ของเราจึงเป็นการแก้ไข


0

ฉันมีปัญหาที่คล้ายกัน เคล็ดลับของ Renato ใช้ได้ผลกับฉัน ฉันใช้ไฟล์คลาส java เวอร์ชันเก่า (ภายใต้โฟลเดอร์ WEB-INF / คลาส) และปัญหาก็หายไป ดังนั้นจึงควรเป็นเวอร์ชันคอมไพเลอร์ที่ไม่ตรงกัน


0

นี่เป็นเคล็ดลับสำหรับฉัน: เพียงแค่ลบไลบรารีทั้งหมดแล้วคอมไพล์และเรียกใช้ จะแจ้งให้มีข้อผิดพลาดในโครงการของคุณยืนยัน เรียกใช้โครงการอีกครั้งหลังจากใช้ไลบรารี


0

โดยทั่วไปเวอร์ชัน Server JDK จะต่ำกว่าแอปพลิเคชันที่ปรับใช้ (สร้างด้วยเวอร์ชัน jdk ที่สูงกว่า)


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.