我在这里读过几个关于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中吗?
例如我读过这篇文章,而且我比以前更加困惑:
答案 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中。