Поведение метода ServletContext.log зависит от контейнера. Метод, который я использовал, чтобы сделать его непротиворечивым, состоит в том, чтобы обернуть ServletConfig, переданный через init (), чтобы создать обернутый ServletContext, который использует наш собственный предоставленный регистратор (в данном случае Slf4j).
public class Slf4jServletConfigWrapper implements ServletConfig {
private final ServletConfig config;
private final Logger log;
public Slf4jServletConfigWrapper(Logger log, ServletConfig config) {
this.log = log;
this.config = config;
}
public ServletContext getServletContext() {
return new ServletContext() {
public void log(String message, Throwable throwable) {
log.info(message, throwable);
}
public void log(Exception exception, String msg) {
log.info(msg, exception);
}
public void log(String msg) {
log.info(msg);
}
...
Полный код Slf4jServletConfigWrapper.java
В вашем сервлете переопределите метод init () для использования оболочки ServletConfig
public void init(final ServletConfig config) throws ServletException {
super.init(new Slf4jServletConfigWrapper(log, config));
}