2010-01-20 5 views
2

EJBs, Servlet, JSP 등을 사용하여 첫 번째 Java EE 애플리케이션을 작성하고 있습니다.
JBOSS 4.2 AS 및 Eclipse를 IDE로 사용하고 있습니다. 서버 시작 및 중지와 같은 작업을 포함합니다.Eclipse 콘솔에 서블릿 게시 요청 로깅

내가 이해할 수없는 것은 같은 JSP 내부 지침, 로그인 할 때이다 : 예상대로 이클립스 콘솔과 $SERVER_HOME/server/default/log/server.log 모두에서

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

로그를 기록 지시 모든 종류의 내가 내 시도했다 서블릿이 실패합니다.

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

물론 서블릿 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!"); 
    } 
} 

내가 뭔가를 분명 실종

여기 서블릿을 호출하는 JSP의 코드는? 모든 것을 잘못하고 있거나 잘못된 장소를보고 있습니까?

답변

1

stdout/stderr에 아무 것도 쓰여지지 않으면 서블릿이 실제로 실행되지 않았 음을 의미합니다. 그것은 사소한 원인이 많이있을 수 있습니다. Servlet이 classpath에 있습니까? 서블릿이 web.xml에 정의되었거나 @WebServlet으로 주석되어 있습니까? url-pattern이 맞습니까? 요청 URL에서 다루고 있습니까? 이클립스 디버거는 뭐라고 말합니까? Appserver의 자체 로그에서 무엇을 말합니까?

그런데 실제로는 로깅되지 않습니다. 이것은 stdout/stderr에 단순하게 쓰는 것입니다. 로깅은 그 이상입니다.

+0

의견을 보내 주셔서 감사합니다. 서블릿 *이 처형되었지만 어떻게 든 최신이 아니 었습니다. 전체 재 출판은 * 모든 * 호수에서 일하는 교육의 매력으로 귀결되었습니다. – Agos

3

방금 ​​JBoss 4.2.3에 배포 한 더미 서블릿을 생성했고 의 에 System.out.println 출력과 System.out.println 출력을 사용하므로 문제를 재현 할 수 없습니다. 뭔가 다른 것이 틀림 없습니다.

특히 Java EE 컨테이너를 사용할 때는 System.out 또는 System.err을 사용하지 않는 것이 좋습니다. 대신 로깅 프레임 워크 (Don't Use System.out.println!)를 사용해야하며 logback (log4j의 후속 버전)을 사용하는 것이 좋습니다.

+0

유용한 "적절한 로깅"제안을 +1합니다. – Agos