что является правильным способом использовать log4j в jsp страницах

Я обычно только использую константу для вещей, которые я знаю, будет никогда , изменяются, такие как скорость света в вакууме.

я предпочитаю только для чтения для вещей, которые могли потенциально изменение. Таким образом, я только должен перекомпилировать один dll, если изменение происходит. Исключение к этому эмпирическому правилу - то, если переменная является частной/защищать/дружественной к своему собственному блоку. В тех случаях безопасно использовать константу

13
задан flybywire 20 October 2009 в 14:17
поделиться

4 ответа

Что не так с:

Logger logger = Logger.getLogger( "source.jsp" );

Вы, конечно, можете добавить к нему лучший однозначный префикс. Фактически, что-то вроде JSPS.source.jsp лучше, поскольку вы можете настроить правила ведения журнала для JSPS регистратора, которые позже будут применены ко всем вспомогательным регистраторам.

] Сказав это, зачем вам входить напрямую из JSP?

7
ответ дан 1 December 2019 в 18:55
поделиться

Вы можете написать фабричный метод, который принимает текущий запрос в качестве параметра, и который получает регистратор на основе имени JSP, примерно так:

public static Logger getLogger(HttpServletRequest request) {
    String requestUri = request.getRequestURI();
    String jspName = requestUri.substring(requestUri.lastIndexOf('/'));
    return Logger.getLogger(jspName);
}

Возможно, вам придется немного поиграть с ним, чтобы он заработал (я не тестировал приведенный выше код), но в этом суть.

] Его можно использовать непосредственно из JSP, или из класса bean-компонента или тега, который используется JSP, если у него есть доступ к объекту запроса.

5
ответ дан 1 December 2019 в 18:55
поделиться

Ниже приведен код. Размещение и конфигурация файла конфигурации такие же, как и в сервлете или другом классе.

<%@ page import="org.apache.log4j.Logger" %>
<html>
    <head>
        <title>Demonstration log4j usage in jsp</title>
    </head>
    <body>
        <% Logger log = Logger.getLogger("com.mobilefish.demo.test");
           log.debug("Show DEBUG message");
           log.info("Show INFO message");
           log.warn("Show WARN message");
           log.error("Show ERROR message");
           log.fatal("Show FATAL message"); %>
        <b>The log messages are shown in the Tomcat console and in the ${catalina.home}/logs/demo.log file.</b>
    </body>
</html>
4
ответ дан 1 December 2019 в 18:55
поделиться

Используйте соответствующий ConversionPattern при настройке log4j, например:

%d [%C] %-5p %c - %m%n

Здесь% C выводит полное имя класса, когда вы вызываете любой из методов класса Logger.

1
ответ дан 1 December 2019 в 18:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: