Регистрация запросов к сервлету в консоли Eclipse - PullRequest
2 голосов
/ 20 января 2010

Я пишу свое первое приложение 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, любая инструкция журналирования, которую я пробовал внутри сервлета, завершается неудачей.

Вот код из 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>

И, конечно же, сервлет сам по себе:

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 ]

3 голосов
/ 20 января 2010

Я только что создал фиктивный сервлет, который развернул на JBoss 4.2.3 и использовал вывод System.out.println в консоли Eclipse и в server/default/log/server.log, поэтому я не могу воспроизвести вашу проблему. Там должно быть что-то еще не так.

При этом я не рекомендую использовать System.out или System.err, особенно при использовании контейнера Java EE. Вместо этого вам следует использовать каркас ведения журнала ( Не использовать System.out.println! ), и я предлагаю использовать logback (преемник log4j).

1 голос
/ 20 января 2010

Если вы не видите ничего записываемого в stdout / stderr, то это просто означает, что сервлет на самом деле не был выполнен. Это может иметь много тривиальных причин. Сервлет в пути к классам? Сервлет определен в web.xml или помечен @WebServlet? url-pattern правильно? URL запроса покрывает это? Что говорит отладчик Eclipse? Что говорит собственный журнал сервера приложений?

Кстати, это на самом деле не логирование. Это просто запись в stdout / stderr. Ведение журнала - это нечто большее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...