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

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

用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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航