Регистрация каждого jsp: include - PullRequest
3 голосов
/ 08 января 2010

Я хочу регистрировать каждый тег <jsp:include>.

Поддерживает ли стандартная библиотека тегов JavaServer Pages (JSTL) ведение журналов и, если да, то как включить ее?

Ответы [ 4 ]

8 голосов
/ 08 января 2010

Вы можете реализовать Filter и настроить его отображение следующим образом:

<filter>
    <filter-name>logging</filter-name>
    <filter-class>com.example.LoggingFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>logging</filter-name>
    <url-pattern>*.jsp</url-pattern>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>

Этот фильтр будет перехватывать все RequestDispatcher.include() вызовы, включая <jsp:include>.Чтобы получить путь к включенному ресурсу, используйте request.getAttribute("javax.servlet.include.servlet_path")

2 голосов
/ 08 января 2010

Не напрямую, но вы можете написать свои собственные теги. Если вы достаточно сумасшедший и трудолюбивый, вы можете написать <thilo:include> теги, которые делают <jsp:include> и вызвать немного кода Java для ведения журналов через log4j или тому подобное.

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

Нет простого способа достичь этого. Моим решением был небольшой файл pre.jsp, который содержит:

<%@page import="org.apache.log4j.Logger"%>
<%
    String __jspName = this.getClass().getSimpleName().replaceAll("_", ".");

    Logger log = Logger.getLogger(this.getClass().getName());
    log.info("BEGIN JSP "+__jspName);
%>
<!-- BEGIN <%=__jspName %> -->

В каждом файле я бы добавил эту строку в начале:

<%@ include file="/pre.jsp" %>

и этот в конце:

<!-- END <%=__jspName %> --><% log.info("END JSP "+__jspName); %>
1 голос
/ 08 января 2010

Найдите фактический код Java, который реализует этот тег, и проверьте, есть ли в нем какие-либо операторы протоколирования. Если есть включить класс в вашей конфигурации регистрации. Если нет операторов записи в журнал, используйте AOP для определения перехватчика метода, который будет регистрировать каждый вызов метода реализации Java. Из перехватчика метода у вас есть доступ к аргументам вызванного метода, и при необходимости они также могут быть зарегистрированы.

Помните, что AOP может замедлить выполнение вашего приложения. Вы можете отключить его в производственной среде.

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