tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Akoulov, Alexandre [IT]" <alexandre.akou...@citigroup.com>
Subject default logging in tomcat 5.5
Date Wed, 23 Nov 2005 07:50:29 GMT
Hi all,

I am in the process of upgrading from tomcat-3.3 to tomcat-5.5 and would greatly appreciate
if you could let me know whether I understood tomcat-5.5's default logging correctly.

As of tomcat 5.5 Context element does not have a Logger sub-element. Logging can be configured
with log4j or java.util.logging. I went with  java.util.logging, which is turned on by default
and uses <CATALINA_HOME>/conf/logging.properties. To be more exact Tomcat does not use
java.util.logging as is but rather "will, in the default configuration, replace the default
LogManager implementation with a container friendly implementation called JULI" (extract from
http://tomcat.apache.org/tomcat-5.5-doc/logging.html)

The following describes how the default logging (ie java.util.logging) works in tomcat-5.5
(well, it describes how I saw it working :) ):

I. 
When using <CATALINA_HOME>/conf/logging.properties from the box (ie without any modifications)
all the logging performed in the particular web app goes to the handlers defined in the .handlers
clause, or in other words it gets logged into the logs/catalina.<dateStamp>.txt file
and the console. In addition, all the exceptions thrown by the web app go to the 2localhost
handler, ie they are logged into the localhost.<dateStamp>.log

That's what <CATALINA_HOME>/conf/logging.properties has:
--------------------------------------------------
handlers = 1catalina.org.apache.juli.FileHandler, ...., 2localhost.org.apache.juli.FileHandler,...

.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

....
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
....
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.
--------------------------------------------------

that is what our web app has
--------------------------------------------------
public class TestServlet extends HttpServlet {
  public void doGet(H....
  {
	Logger logger1 = Logger.getLogger("test");  
      Handler[] handlers = logger1.getHandlers();
      for (int i = 0; i < handlers.length; i++) {
            Handler handler = handlers[i];
            System.out.println(handler);
      } 
      System.out.println("handlers.size: " + handlers.length);
        
      logger1.info("INFO logging is successful");
        
      throw new IllegalStateException("test exception");
  }
}
--------------------------------------------------

once TestServlet serves HTTP GET request the result is:

a) Console has the following
	handlers.size: 0	// result of System.out.println
	Nov 23, 2005 5:24:37 PM com.SSMB.TestProj.servlets.TestServlet doGet // result of logging
	  INFO: INFO logging is successful 

b) catalina.2005-11-23.log has the following:
	Nov 23, 2005 5:24:37 PM com.SSMB.TestProj.servlets.TestServlet doGet // result of logging
	  INFO: INFO logging is successful 

c) localhost.2005-11-23.log has the following
	java.lang.IllegalStateException: test exception			// result of throwing the ISEx
	 	at com.SSMB.TestProj.servlets.TestServlet.doGet(TestServlet.java:45)


II. 
If we want the logging performed by a particular web app and the exceptions thrown by it to
go to a particular file we can modify <CATALINA_HOME>/conf/logging.properties.  Let's
assume that we have got a web app that runs on the /test context.

That's how <CATALINA_HOME>/conf/logging.properties should be modified
--------------------------------------------------
# add new handler, 6test.org.apache.juli.FileHandler, to the list 
handlers = 1catalina.org.apache.juli.FileH....,...,6test.org.apache.juli.FileHandler
....
## new line - 'test' logger will only log into 6test handler
test.handlers=6test.org.apache.juli.FileHandler
...
## define 6test file handler - all logging done via 'test' logger 
## will go to test.<dateStamp>.txt file
6test.org.apache.juli.FileHandler.level = FINE
6test.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
6test.org.apache.juli.FileHandler.prefix = test.
....
## all of the exceptions coming from /test context are to be logged into 6test handler.
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/test].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/test].handlers = 6test.org.apache.juli.FileHandler
--------------------------------------------------

once TestServlet (see its doGet method content above) serves HTTP GET request the result is:

a) Console has the following
	org.apache.juli.FileHandler@ff8c74 // result of System.out.println
	handlers.size: 1 				// result of System.out.println

b) test.2005-11-23.log has the following:
	Nov 23, 2005 6:17:21 PM com.SSMB.TestProj.servlets.TestServlet doGet // result of logging
        INFO: INFO logging is successful
	Nov 23, 2005 6:17:21 PM org.apache.catalina.core.StandardWrapperValve invoke
	SEVERE: Servlet.service() for servlet TestServlet threw exception 	// result of throwing
the ISEx
	java.lang.IllegalStateException: test exception
		at com.SSMB.TestProj.servlets.TestServlet.doGet(TestServlet.java:45)
		


Thanks a lot for reading my "tomcat5.5 default logging" novel. I'd greatly appreciate if you
could give me a feedback on whether I described the tomcat5.5 logging behaviour correctly.


Kind regards,

Alexandre.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message