开发者

ServletContext.log() not logging

Log output of my RemoteServiceServlet (GWT) is not shown in Logfiles or Stdout when using getServletContext().log("anything");

For dependency injection I use Google Guice. For my own log output I use slf4j-jdk14. I tried this in Tomcat 6 as well as in Jetty (GWT devmode).

To make it clear, my Servlet:

@Singleton
public class MyServiceServlet extends RemoteServiceServlet implements MyService {

    private static final Logger log = LoggerFactory.getLogger(MyServiceServlet.class);
    private final ADependency dep;

    @Inject
    public MyServiceServlet(ADependency dep) {
        getServletContext().log("THIS IS NOT SHOWN IN MY LOGS");
        log.error("THIS IS SHOWN IN MY LOGS");
        this.dep = dep;
    }
}

So, where can I find the missing log output or where can I con开发者_Python百科figure the ServletContext-Log?


The ServletContext.log method behavior is container specific. The method I have used to make it consistent is to wrap the ServletConfig passed in through init() in order to create a wrapped ServletContext which uses our own provided logger (Slf4j in this case).

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);
      }
...

Full Slf4jServletConfigWrapper.java code

In your Servlet override the init() method to use the ServletConfig wrapper

public void init(final ServletConfig config) throws ServletException {
  super.init(new Slf4jServletConfigWrapper(log, config));
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜