Tomcat:日志记录的建议

时间:2010-04-05 04:47:31

标签: java tomcat logging

我在这里读过几个关于Tomcat和日志记录的问题,但我仍然不理解“更大的图片”,因此我的问题是:

我的Webapps应该如何以及在哪里进行日志记录?

默认情况下,我的设置Tomcat 6.0.20日志会进入以下文件/ appender:

./ Apache的Tomcat的6.0.20 /日志/ catalina.out中

我想我的webapps也会登录到这个文件/ appender吗?

假设我的案例非常简单,我只有一个servlet:

import ... // What do I import here in order to be able to log?

public class SOServlet extends HttpServlet {

    public void doGet(
        final HttpServletRequest request,
        final HttpServletResponse response
    ) throws IOException, ServletException {
    ... // I want to log here, what do I write?

有什么问题知道在同一个Tomcat上运行多个webapp? (显然从阅读各种问题有很多问题)。

.war怎么样,我需要把log4j / sl4f / commons-logging /中的任何东西放在我的.war中吗?

例如我读过这篇文章,而且我比以前更加困惑:

http://tomcat.apache.org/tomcat-6.0-doc/logging.html

1 个答案:

答案 0 :(得分:1)

  

我的Web应用程序应该如何以及在何处进行日志记录?

这取决于。您可以使用ServletContext#log()(通过继承的getServletContext()方法在servlet中可用)将其记录到与servletcontainer本身相同的日志文件中,或者用于单独的记录器/日志文件在每个slf4j和/或logback / log4j的帮助下。通常的做法是为每个webapp提供自己的记录器,以便您在日志记录中拥有更多的自由和控制权。

对于您感兴趣的案例,here是关于该主题的Tomcat wiki。

  

有什么问题知道在同一个Tomcat上运行多个webapp? (显然从阅读各种问题有很多问题)。

如果这与日志记录有关:您最终会在日志文件中查看较差的概述,并且在记录单个Web应用程序时的自由度和控制力会降低。

  

.war怎么样,我需要把log4j / sl4f / commons-logging /无论放在我的.war中吗?

无论使用哪个库:如果它特定于webapp,请将其放入WAR中。如果它对所有webapp都是通用的,请将它放在appserver的公共库中。如果它特定于appserver,请将其放在appserver的lib中。