利用日志和过滤器生成用户访问日志

类别:Java 点击:0 评论:0 推荐:

用log4j来生成日志。然后将日志类加入到过滤器中。使得当用户访问时jsp或者servlet时可以生成日志。便于调试。
下面是用log4j来的得到用户访问的地址并写道文件中。
package xzt.rs.tools;
import xzt.rs.tools.Cundate;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*; // For Date class
import org.apache.log4j.*;
/** Simple filter that prints a report in the log file
* whenever the associated servlets or JSP pages
* are accessed.
*/

public class LogFilter implements Filter {
  protected FilterConfig config;
  private ServletContext context;
  private String filterName;
  private Cundate cd=new Cundate();
  //
  static Logger logger = Logger.getLogger(LogFilter.class.getName());
  //
  public void doFilter(ServletRequest request,
                       ServletResponse response,
                       FilterChain chain)
        throws ServletException, IOException {
    HttpServletRequest req = (HttpServletRequest)request;

    chain.doFilter(request,response);
    //
        PropertyConfigurator.configure("Log4j.properties");

        LogFilter.logger.info(req.getRemoteHost() +
                "试图访问" +
                req.getRequestURL() +
                "在" + cd.getTime4() + ". " +
                "(被报告:" + filterName + ".)");


   //
  }

  public void init(FilterConfig config)
        throws ServletException {
    this.config = config; // In case it is needed by subclass.
    context = config.getServletContext();
    filterName = config.getFilterName();
  }

  public void destroy() {}

}
//

得到当前日期的简单类。
package  xzt.rs.tools.*;


public class Cundate{



  public String getTime4(){

    Date d = new Date();  //Get current date to d.
    SimpleDateFormat fm = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); //Set date format
    String strDate = fm.format(d); //Get date to string strDate via format fm.
    return strDate;
  }

}
在web.xml中配置过滤器,使得用户访问jsp或者servlet时把访问的文件、时间、用户写道日志中。


  <filter>
    <filter-name>Logger</filter-name>
    <filter-class>
     xzt.rs.tools.LogFilter
    </filter-class>
  </filter>
  <!-- ... -->

  <!-- Apply the Logger filter to all servlets and
  JSP pages.
  -->
  <filter-mapping>
    <filter-name>Logger</filter-name>
    <url-pattern>/*.jsp</url-pattern>
  </filter-mapping>
    <filter-mapping>
    <filter-name>Logger</filter-name>
    <url-pattern>/servlet/*</url-pattern>
  </filter-mapping>
  <!-- ... -->


生成的文件内容

 INFO [tcpConnection-8080-3] (LogFilter.java:31) - newtransit试图访问http://192.168.0.3:8080/oasystem/main.jsp在2005-01-21-16-40-31. (被报告:Logger.)






Log4j.properties的配置文件
log4j.rootLogger=debug, A1

#打印到文件

log4j.appender.A1=org.apache.log4j.RollingFileAppender

log4j.appender.A1.File=F:/resin/resin-2.0.4/bak/sdcdcBak.log

log4j.appender.A1.MaxFileSize=1024KB

log4j.appender.A1.MaxBackupIndex=100

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

 

#打印到控制台

#log4j.appender.B1=org.apache.log4j.ConsoleAppender

#log4j.appender.B1.layout=org.apache.log4j.PatternLayout

#log4j.appender.B1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

#log4j.appender.B1.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n


本文地址:http://com.8s8s.com/it/it11698.htm