我使用的是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上作为服务运行时,控制台输出也会被捕获并重定向,但文件名不同。