2010-01-20 36 views
2

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

我无法理解的是,虽然记录在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 itslef:

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!"); 
    } 
} 

我失去了一些东西明显?做错了什么,或只是看错了地方?

回答

1

如果您没有看到写入stdout/stderr的任何内容,那么这仅表示该servlet实际上未被执行。这可能有很多微不足道的原因。 Servlet是否在类路径中? Servlet是否在web.xml中定义或用@WebServlet注解? url-pattern是否正确?请求URL是否覆盖它? Eclipse调试器说什么?应用服务器自己的日志说什么?

顺便说一下,这实际上并不是日志记录。这只是写入stdout/stderr。记录不止于此。

+0

感谢您的评论。 servlet *正在被执行,但不知何故不是最新的。完全重新发布导致*所有*指令工作湖魅力。 – Agos

3

我只是创建了我部署在JBoss 4.2.3和使用System.out.println输出在Eclipse控制台和server/default/log/server.log所以我不能重现你的问题一个虚拟的servlet。一定还有其他的错误。

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

+0

对于有用的“正确记录”建议+1。 – Agos