WebSphereApplicationServer:servlet部署描述符的web.xml位置和过滤器servlet将记录的日志文件位置

WebSphereApplicationServer:servlet部署描述符的web.xml位置和过滤器servlet将记录的日志文件位置,websphere,web.xml,logfile,Websphere,Web.xml,Logfile,我在Tomcat中部署了一个过滤器,它记录所有servlet的URL和请求参数。 现在,我想在websphereapplicationserver中部署相同的组件。 1.在哪里复制我的筛选器类文件? 2.web.xml的位置,我必须在其中输入筛选器类部署描述符xml标记。 3.筛选器类将在其中记录URL和请求参数的日志文件 下面是我的过滤器类的代码 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; imp

我在Tomcat中部署了一个过滤器,它记录所有servlet的URL和请求参数。 现在,我想在websphereapplicationserver中部署相同的组件。 1.在哪里复制我的筛选器类文件? 2.web.xml的位置,我必须在其中输入筛选器类部署描述符xml标记。 3.筛选器类将在其中记录URL和请求参数的日志文件

下面是我的过滤器类的代码

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.text.SimpleDateFormat;

import java.util.Date;

public class T24RequestTime implements Filter {

  private FilterConfig config = null;

  Date dt = new Date();

  public void init(FilterConfig config) throws ServletException {

    this.config = config;

  }

  public void destroy() {

    config = null;

  }

  public void doFilter(ServletRequest request, ServletResponse response,

                     FilterChain chain) throws IOException, ServletException {

    long before = System.currentTimeMillis();

    chain.doFilter(request, response);

    long after = System.currentTimeMillis();

    SimpleDateFormat dateFormat = new SimpleDateFormat("[dd/MMM/yyyy:HH:mm:ss]");

    String endDate = dateFormat.format(new Date());    

    String name = "";

    if (request instanceof HttpServletRequest) {

      name = ((HttpServletRequest)request).getRequestURI();

    }

    config.getServletContext().log("T24: !Date-Time: !"+endDate+ "! Total Elapsed Time: !" +         (after - before) + "!ms!"+"! Company: !"+((HttpServletRequest)request).getParameter("companyId")+"! User: !"+((HttpServletRequest)request).getParameter("user")+"! Version: !"+((HttpServletRequest)request).getParameter("version")+"! Application: !"+((HttpServletRequest)request).getParameter("application")+"! Routine Name: !"+((HttpServletRequest)request).getParameter("routineName")+"! Timing: !"+((HttpServletRequest)request).getParameter("timing")+"! URL: !"+ name );

    System.out.println("fsfsfsd");

  }
}

在WebSphere中,您应该真正部署整个EAR文件。不要在部署后尝试修改部署描述符(web.xml等)。更改部署描述符后,应构建并重新部署。相信我,其他一切都不会起作用,至少会在操作中产生麻烦

默认情况下,WebSphere将日志记录到
/logs/
SystemOut.log
trace.txt
。日志记录配置取决于您的环境

  • 过滤器类文件通常应该和其他应用程序类一起部署到WAR文件中。如果要将此筛选器应用于多个应用程序而不部署到每个应用程序,请参阅
  • 与Tomcat不同,WebSphere没有共享/全局web.xml,因此您必须在每个WAR的web.xml中配置过滤器

  • 顺便说一句:您应该看看
    StringBuilder
    来创建日志语句。