Вот опция, которую я придумал, она может помочь:
public static class Container<E> {
private Class<E> clazz;
public Container(Class<E> clazz) {
this.clazz = clazz;
}
public E createContents() throws Exception {
return clazz.newInstance();
}
}
РЕДАКТИРОВАНИЕ: Кроме того, можно использовать этого конструктора (но это требует экземпляра E):
@SuppressWarnings("unchecked")
public Container(E instance) {
this.clazz = (Class<E>) instance.getClass();
}
public enum MyLoggerFactory {
INSTANCE;
@SuppressWarnings("unchecked")
private final Map<Class, Logger> loggers = new HashMap<Class, Logger>();
@SuppressWarnings("unchecked")
public Logger getLogger(Class clazz) {
if (loggers.get(clazz) == null) {
loggers.put(clazz, LoggerFactory.getLogger(clazz));
}
return loggers.get(clazz);
}
}
Тогда ваша страница JSP может выглядеть так:
<%
MyLoggerFactory.INSTANCE.getLogger(getClass()).info("Hello Logging!");
%>
Вы можете попробовать (обратите внимание на "!")
<%! org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger("JSPname"); %>
Затем замените свой System.out на
<% log.info("Hello Logging!"); %>
. Комментарий Бориса действительно следует принять во внимание, JSP не должны нуждаться в регистрации в общем . Я бы использовал эту технику (или что-то подобное) только для замены существующего журнала, который необходимо сохранить.