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

在Google AppEngine DevServer中记录对Eclipse控制台的静态文件访问,eclipse,google-app-engine,console,static-files,Eclipse,Google App Engine,Console,Static Files,是否可以让AppEngine开发服务器在每次提供静态文件时向eclipse控制台输出一条快速日志消息 例如,如果我的网站加载了“background.gif”(作为文件系统中的静态文件),我希望在Eclipse控制台中显示“GetRequestforStaticFile/war/resources/images/background.gif by 127.0.0.1”这样的行 也许tomcat(appengine在本地使用的服务器)有一个命令行开关?我找不到任何相关的。。。但我确实找到了一些关于

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

例如,如果我的网站加载了“background.gif”(作为文件系统中的静态文件),我希望在Eclipse控制台中显示“GetRequestforStaticFile/war/resources/images/background.gif by 127.0.0.1”这样的行


也许tomcat(appengine在本地使用的服务器)有一个命令行开关?我找不到任何相关的。。。但我确实找到了一些关于的文档,这些文档可能看起来很有希望,但我不知道这是否符合我的要求,或者即使它符合我的要求,我如何才能在Eclipse控制台中显示任何潜在的输出。

您可以使用servlet过滤器拦截所有请求:

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() {
  }
}
唯一的问题是,您无法区分请求静态内容和动态内容。为了做到这一点,您可以将所有静态内容放在一个目录下,并将此筛选器仅映射到该路径