1.概述

在实际的项目开发过程中,经常需要在项目运行时,记录并在控制台中输出运行时的日志信息,便于查看项目的运行状况。本实例将介绍如何应用过滤器实现日志记录。运行本实例,将在控制台中输出项目运行时的日志信息。

2.技术要点

本实例主要应用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("内存不足")”。

3.具体实现

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

public class LogFilter implements 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来输出日志,本例输出格式如下:

og4j.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

最新文章

  1. 详解javascript,ES5标准中新增的几种高效Array操作方法
  2. volatile使用详解
  3. JS小记
  4. 【转】XCode环境变量及路径设置 -- 待学习
  5. C++ 单链表的基本算法
  6. 如何在 OS X Yosemite 中安装 Java
  7. 一键安装IIS的点点滴滴——For所有Microsoft的操作系统(下)
  8. [SQL基础教程] 4-1 数据的插入(INSERT)
  9. Spring IOC(三)依赖注入
  10. 驰骋工作流引擎 -CCBPM如何自动升级
  11. 【java】-- 多线程之间实现通讯
  12. log4cplus使用(三)-日志重定向
  13. SpringBoot与数据访问
  14. ES6精简要点
  15. 提取aar 包中的jar包,反编译再替换成新的aar
  16. Python实现京东自动登录
  17. Spring mvc下载文件java代码
  18. [UE4]增加机器人
  19. 【Git+Docker】Docker初期学习认识和安装配置详解
  20. 【代码笔记】iOS-只让textField使用键盘通知

热门文章

  1. Handler没法取出消息队列中的数据的一个原因
  2. ajax 基础实例
  3. 网络编程TCP协议-聊天室
  4. jQuery特效手风琴特效 手写手风琴网页特效
  5. Spring+EhCache缓存实例(详细讲解+源码下载)(转)
  6. 基于visual Studio2013解决C语言竞赛题之0423比赛安排
  7. Ruby学习-第二章
  8. BZOJ 1704: [Usaco2007 Mar]Face The Right Way 自动转身机( 贪心 )
  9. JVM --字节码的加载
  10. Jquery学习笔记:获取jquery对象的基本方法