在Google AppEngine DevServer中记录对Eclipse控制台的静态文件访问

时间:2014-09-11 15:11:25

标签: eclipse google-app-engine console static-files

是否可以让AppEngine dev服务器在每次提供静态文件时向eclipse控制台输出快速日志消息?

例如,如果我的网站加载" background.gif" (作为来自文件系统的静态文件),我希望看到一条像" GET请求静态文件/war/resources/images/background.gif 127.0.0.1"显示在Eclipse控制台中。

也许tomcat有一个命令行开关(appengine在本地使用的服务器)?我无法找到任何相关内容here ...但我确实找到了一些关于"access log valve (?!?)"的文档可能看起来很有前景,但我不知道这是否符合我的要求for,或者即使它确实如此,我如何在Eclipse控制台中显示任何可能的输出。

1 个答案:

答案 0 :(得分:0)

您可以使用servlet Filter拦截所有请求:

public class LoggingFilter implements Filter {

  private static final Logger log = Logger.getLogger(LoggingFilter.class.getName());

  @Override
  public void init(FilterConfig filterConfig) throws ServletException {
  } 

  @Override
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

    HttpServletRequest httpRequest = ((HttpServletRequest) request);
    log.info(httpRequest.getMethod() + " request for " + httpRequest.getRequestURI() + " from " + httpRequest.getRemoteAddr());
    request.getRequestDispatcher(httpRequest.getRequestURI()).forward(request, response);
  }

  @Override
  public void destroy() {
  }
}

唯一的问题是您无法区分请求静态和动态内容。为此,您可以将所有静态内容放在一个目录下,并将此Filter映射到该路径。