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 RE: default logging in tomcat 5.5
Date Thu, 24 Nov 2005 06:07:31 GMT
Thanks a lot, Remy , for reviewing my email and providing a good tip on System.out

Kind regards,

Sasha. 

-----Original Message-----
From: Remy Maucherat [mailto:remy.maucherat@gmail.com]
Sent: Wednesday, 23 November 2005 10:34 PM
To: Tomcat Users List
Subject: Re: default logging in tomcat 5.5


Yes, since you don't have a configuration in your web application
(WEB-INF/classes/logging.properties), everything uses the
configuration of the container and it all depends on the logger names
used.

Note: you should be able to capture and log System.out stuff to the
container logger using swallowOutput

--
xxxxxxxxxxxxxxxxxxxxxxxxx
Rémy Maucherat
Developer & Consultant
JBoss Group (Europe) SàRL
xxxxxxxxxxxxxxxxxxxxxxxxx






On 11/23/05, Akoulov, Alexandre [IT] <alexandre.akoulov@citigroup.com> wrote:
> 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.
>

Yes, since you don't have a configuration in your web application
(WEB-INF/classes/logging.properties), everything uses the
configuration of the container and it all depends on the logger names
used.

Note: you should be able to capture and log System.out stuff to the
container logger using swallowOutput

--
xxxxxxxxxxxxxxxxxxxxxxxxx
Rémy Maucherat
Developer & Consultant
JBoss Group (Europe) SàRL
xxxxxxxxxxxxxxxxxxxxxxxxx

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


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


Mime
View raw message