Servlet发布请求记录到Eclipse控制台

时间:2010-01-20 11:09:51

标签: eclipse jsp logging servlets java-ee

我正在编写我的第一个Java EE应用程序,使用EJB,Servlet,JSP等 我正在使用JBOSS 4.2 AS和Eclipse作为IDE,包括启动和停止服务器等任务。

我无法理解的是,在jsp中记录指令时,如:

<% System.out.println("Log this!"); %>

在Eclipse控制台和$SERVER_HOME/server/default/log/server.log中按预期记录,我在servlet中尝试的任何日志记录指令都失败了。

以下是调用servlet的jsp代码:

<form action="MyServlet" method="POST" accept-charset="utf-8">
    <input type="text" name="id" value="" id="id">
    <input type="submit" value="Go &rarr;">
</form>

当然servlet还是:

public class MyServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public MyServlet() {
        super();
        System.out.println("Hi, I'm your servlet's constructor");
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.err.println("Hi, this is your servlet on system.err");
        System.out.println("Hi, this is your servlet on system.out");
        System.out.println(request);
        ServletContext sc = getServletContext();
        sc.log("Hi, this is your servlet on servlet context!");
    }
}

我错过了一些明显的东西吗?做错了什么,或只是找错了地方?

2 个答案:

答案 0 :(得分:3)

我刚创建了一个虚拟servlet,我在JBoss 4.2.3上部署并在Eclipse控制台和System.out.println中使用server/default/log/server.log输出,因此我无法重现您的问题。一定有别的错误。

话虽这么说,我不建议使用System.outSystem.err,尤其是在使用Java EE容器时。相反,您应该使用日志框架(Don't Use System.out.println!),我建议使用logback(log4j的后继者)。

答案 1 :(得分:1)

如果没有看到任何写入stdout / stderr的内容,那么这只是意味着servlet实际上没有被执行。这可能有很多微不足道的原因。 Servlet是否在类路径中? Servlet是在web.xml中定义的还是用@WebServlet注释的? url-pattern是否正确?请求网址是否涵盖了它? Eclipse调试器说了什么? appserver自己的日志说了什么?

顺便说一句,这实际上并不是日志记录。这只是对stdout / stderr的简单写作。记录不止于此。