Hello, I'm seeing a difference in the way Tomcat handles logging exceptions thrown by a servlet, and I wonder if it's a configuration change or if this is simply how Tomcat is expected to behave.
Tomcat versions tested: 5.5.26, 6.0.35, 7.0.25 OS: Windows 7 Java: 1.5.0_22 for Tomcat 5.5.26 and 6.0.35, 1.6.0_24 for Tomcat 7.0.25 To test, I created a webapp with a single servlet, ExceptionServlet, that simply throw a ServletException in its service() method, e.g.: public class ExceptionServlet extends HttpServlet { protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { throw new ServletException("HEY SERVLET EXCEPTION"); } } Further, the webapp uses log4j (1.2.16) and commons-logging (1.1.1). The log4j.properties for the webapp looks like this: log4j.rootLogger=INFO,A log4j.appender.A=org.apache.log4j.RollingFileAppender log4j.appender.A.file=/opt/personal/logs/ex/ex.info.log log4j.appender.A.layout=org.apache.log4j.PatternLayout log4j.appender.A.layout.conversionPattern=%m%n log4j.appender.A.maxFileSize=10MB log4j.appender.A.maxBackupIndex=10 In a default deployment of Tomcat 5.5.26, I drop the webapp in the webapps directory, start up Tomcat, and call the ExceptionServlet. The resultant exception message and stack trace appear in the log file specified by the webapp's log4j.properties file, as I would expect. Servlet.service() for servlet ex threw exception javax.servlet.ServletException: HEY SERVLET EXCEPTION at personal.ExceptionServlet.service(ExceptionServlet.java:17) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) ... However, in a default deployment of Tomcat 6.0.35 or Tomcat 7.0.25, when I drop the webapp in the webapps directory, start up the respective Tomcat, and invoke the ExceptionServlet, the resultant exception message and stack trace appear in the Tomcat's log file, e.g. $TOMCAT_HOME/logs/localhost.2012-02-09.log. It's pretty much the same log message as above: # from Tomcat 7.0.25 SEVERE: Servlet.service() for servlet [ex] in context with path [/et] threw exception [HEY SERVLET EXCEPTION] with root cause javax.servlet.ServletException: HEY SERVLET EXCEPTION at personal.ExceptionServlet.service(ExceptionServlet.java:17) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) ... I made no configuration changes to any of the Tomcat installations. So I guess my questions are: 1. Is it correct to expect that exceptions thrown by a servlet should be logged in the webapp's log files? 2. If so, what changed between Tomcat 5.5 and Tomcat 6.0/7.0 that would cause exceptions thrown by a servlet to be logged in Tomcat's log files, or what configuration change do I need to make so that the exception appears in the webapp's logs? Thanks in advance for any insights into my problem! Chris --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org