ServletContext.log消息在tomcat 7中的位置



我使用的是Java 7,tomcat 7。在学习servlet日志记录时,我编写了一个简单的程序。

package net.codejava;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class LogCheck
 */
@WebServlet("/LogCheck")
public class LogCheck extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
 * @see HttpServlet#HttpServlet()
 */
public LogCheck() {
    super();
    // TODO Auto-generated constructor stub
}
/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    ServletContext context = getServletContext();
    String par = request.getParameter("msg");
    if (par == null || par.equals("")){
        context.log("No Message received",new IllegalStateException("Missing Parameter"));
    }else{
        context.log("Here is visitor's message:"+par);
    }
    PrintWriter out = response.getWriter();
    out.println("Log Testing.");
}
}

现在我可以在Eclipse控制台中看到日志消息了。但是我在Tomcat Home/logs文件夹下没有看到任何文件?但我读到它应该将日志消息存储在一些日志文件中。我没有看到任何日志文件在我的情况下。

我是不是错过了一些配置?请帮助

它们将被记录到文件localhost中${today}.log.

正如Maks所说,ServletContext#日志将使用类别org.apache.catalina.core.ContainerBase.进行日志记录,当您在conf/logging.properties中查看Tomcat的日志记录配置时,您会发现这些消息将转到前缀为localhost. 的文件

https://tomcat.apache.org/tomcat-7.0-doc/logging.html

javax.servlet.ServletContext.log(...)编写日志消息的调用由Tomcat内部日志记录处理。此类消息被记录到名为的类别中

org.apache.catalina.core.ContainerBase.[${engine}].[${host}].[${context}]

此日志记录是根据Tomcat日志记录配置执行的。您不能在web应用程序中覆盖它。

日志所在位置:

在unixes上运行Tomcat时,控制台输出通常重定向到名为catalina.out的文件。该名称可以使用环境变量进行配置

当在Windows上作为服务运行时,控制台输出也会被捕获并重定向,但文件名不同。

最新更新