日志记录过滤器

来源:互联网 发布:瘦脸针 皮肤松弛 知乎 编辑:程序博客网 时间:2024/06/16 20:17

关键技术

本实例主要应用Apache的Log4j组件输出日志信息。该组件主要用于日志管理。Logger是Log4j的日志记录器,它是Log4j的核心组件。

在程序中可以使用Logger类的不同方法来输出各种级别的日志信息,Log4j会根据配置的当前日志级别决定输出哪些日志。对应各种级别日志的输出方法如下:

(1)DEBUE日志可以使用Logger类的debug()方法输出日志消息。

语法如下:

logger.debug(Object message)

message:输出的日志消息,例如“logger.error("调试日志")”。

(2)INFO日志可以使用Logger类的debug()方法输出日志消息。

语法如下:

logger.info(Object message)

message:输出的日志消息,例如“logger.error("消息日志")”。

(3)WARN日志可以使用Logger类的info()方法输出日志消息。

语法如下:

logger.warn(Object message)

message:输出的日志消息,例如“logger.error("警告日志")”。

(4)ERROR日志可以使用Logger类的warn()方法输出日志消息。

语法如下:

logger.error(Object message)

message:输出的日志消息,例如“logger.error("数据库连接失败")”。

(5)FATAL日志可以使用Logger类的fatal()方法输出日志消息。

语法如下:

logger.fatal(Object message)

message:输出的日志消息,例如“logger.fatal("内存不足")”。


设计过程

(1)创建日志Filter实现类LogFilter.java主要是在初次调用时开始记录,执行时获取访问的URI和执行前的时间,关键代码如下:

publicclass LogFilterimplements Filter {

private Log log = LogFactory.getLog(this.getClass());

private String filterName;

public void init(FilterConfig config) throws ServletException {

filterName = config.getFilterName();//获取 Filter的 name,启动Filter

log.info("启动 Filter: " + filterName);//

}

public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain)

throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) req;

HttpServletResponse response = (HttpServletResponse) res;

long startTime = System.currentTimeMillis(); //运行前的时间

String requestURI = request.getRequestURI(); //获取访问的URI

requestURI = request.getQueryString() == null ? requestURI //所有的地址栏参数对比

: (requestURI + "?" + request.getQueryString());

chain.doFilter(request, response);

long endTime = System.currentTimeMillis();

//消耗的总时间

log.info(request.getRemoteAddr() + " 访问了 " + requestURI + ", 总用时 "+ (endTime - startTime) + " 毫秒。");

}

public void destroy() { //销毁时记录日志

}

}

(2)使用日志记录需要commons-logging的Log4j来输出日志,本例输出格式如下:

log4j.rootLogger=INFO, A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender

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

log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%l]-[%p] %m%n




原创粉丝点击