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