该系列为imooc Java数据库开发与实战应用中MyBatis课程笔记,跟随课程加入自己见解,同时也为项目中碰到一些问题做了解答
本章节是使用log4j对mybatis执行过程中的信息进行跟踪
日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站,可以免费下载到Log4j最新版本的软件包。
大神写的log4j总结笔记
在项目中使用log4j
一、在maven的pom.xml文件中添加log4j的配置
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
二、在项目resources文件中新增log4j配置文件
resources>new file>log4j.properties
log4j.rootLogger=DEBUG, A1
#记录的是DEBUG级别日志,增加了一个A1日志源
log4j.appender.A1=org.apache.log4j.ConsoleAppender
#A1日志源输出到控制台
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
#使用固定的格式
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
#表示格式的样式
添加完log4j的依赖及配置后,对于常规的mybatis跟踪已经可以使用了
三、使用log4j对mybatis常规跟踪
启动项目
打开浏览器,可以看到项目正常启动了,这是我们查看idea控制台
可以看到控制台有sql select *from users日志输出
再点进详情页中查看
此时控制台显示
日志输出
select * from users where id =? (?代表占位符)
Parameters: 1(Integer) (参数为1,类型为integer)
Total: 1 (在执行过程中返回1条数据)
四、在常规项目中使用log4j
比如我们Servlet中使用log4j
- 首先在Servlet类中创建一个日志记录的实体类对象,以UsersFindByIdServlet为例
package com.damu.servlet;
import com.damu.dao.UsersDAO;
import com.damu.entity.Users;
import org.apache.log4j.Logger;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/detail")
public class UsersFindByIdServlet extends HttpServlet {
/*
创建对应的日志记录对象
通过不同的级别进行日志的记录,常用级别【DEBUG、WARN、INFO、LOG】
*/
private Logger log=Logger.getLogger(UsersFindByIdServlet.class);
private UsersDAO usersDAO=new UsersDAO();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String id =req.getParameter("id");
log.info("获取到查询参数id>"+id);
Users user=usersDAO.findById(Integer.parseInt(id));
log.info("查询完成,查询到的数据>"+user);
req.setAttribute("user",user);
req.getRequestDispatcher("detail.jsp").forward(req,resp);//请求转发至detail.jsp
}
}
- 启动项目,再次观察控制台
- log4j常用日志级别
每个Logger都被了一个日志级别(log level),用来控制日志信息的输出。日志级别从高到低分为:
A:off 最高等级,用于关闭所有日志记录。
B:fatal 指出每个严重的错误事件将会导致应用程序的退出。
C:error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
D:warm 表明会出现潜在的错误情形。
E:info 一般和在粗粒度级别上,强调应用程序的运行全程。
F:debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
G:all 最低等级,用于打开所有日志记录。
Log4j只建议使用4个级别,优先级从高到低分别是error,warn,info和debug。通过使用日志级别,可以控制应用程序中相应级别日志信息的输出。例如,如果使用b了info级别,则应用程序中所有低于info级别的日志信息(如debug)将不会被打印出来。
修改log4j的配置文件,把级别调整为info,再次启动项目
此时之前看到的DEBUG数据就不存在了
关于log4j在mybatis中的使用就简单说到这里