Я обычно только использую константу для вещей, которые я знаю, будет никогда , изменяются, такие как скорость света в вакууме.
я предпочитаю только для чтения для вещей, которые могли потенциально изменение. Таким образом, я только должен перекомпилировать один dll, если изменение происходит. Исключение к этому эмпирическому правилу - то, если переменная является частной/защищать/дружественной к своему собственному блоку. В тех случаях безопасно использовать константу
Что не так с:
Logger logger = Logger.getLogger( "source.jsp" );
Вы, конечно, можете добавить к нему лучший однозначный префикс. Фактически, что-то вроде JSPS.source.jsp
лучше, поскольку вы можете настроить правила ведения журнала для JSPS
регистратора, которые позже будут применены ко всем вспомогательным регистраторам.
] Сказав это, зачем вам входить напрямую из JSP?
Вы можете написать фабричный метод, который принимает текущий запрос в качестве параметра, и который получает регистратор на основе имени JSP, примерно так:
public static Logger getLogger(HttpServletRequest request) {
String requestUri = request.getRequestURI();
String jspName = requestUri.substring(requestUri.lastIndexOf('/'));
return Logger.getLogger(jspName);
}
Возможно, вам придется немного поиграть с ним, чтобы он заработал (я не тестировал приведенный выше код), но в этом суть.
] Его можно использовать непосредственно из JSP, или из класса bean-компонента или тега, который используется JSP, если у него есть доступ к объекту запроса.
Ниже приведен код. Размещение и конфигурация файла конфигурации такие же, как и в сервлете или другом классе.
<%@ 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>
Используйте соответствующий ConversionPattern при настройке log4j, например:
%d [%C] %-5p %c - %m%n
Здесь% C выводит полное имя класса, когда вы вызываете любой из методов класса Logger.