1. 日志工厂
如果一个数据库操作出现了异常,我们需要排错,日志就是最好的助手。
曾经:sout、debug
现在使用:日志工厂
- SLF4J
- LOG4J 【掌握】
- LOG4J2
- JDK_LOGGING
- COMMONS_LOGGING
- STDOUT_LOGGING 【掌握】
- NO_LOGGING
在mybatis中具体使用哪一个日志实现,在设置中设定
STDOUT_LOGGING 标准日志输出
- 测试:
在mybatis核心配置文件中进行配置
空格也不要有
<settings> <!--标准的日志工厂实现--> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings>
2. LOG4J
什么是log4j?
- Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件
- 也可以控制每一条日志的输出格式
- 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程
- 以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
2.1 先导入LOG4J的包
<dependencies> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies>
2.2 log4j.properties
#将等级为DEBUG的日志信息输出到console和file这两个目的地, log4j.rootLogger=DEBUG,console,file # 控制台(console) log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.Threshold=DEBUG log4j.appender.console.Target=System.out log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n #文件出书的相关设置 log4j.appender.file = org.apache.log4j.RollingFileAppender log4j.appender.file.File = ./log/hxl.log log4j.appender.file.MaxFileSize = 10mb log4j.appender.file.Threshold = DEBUG log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern = [%p][%d{yy-MM-dd}][%c]%m%n #日志输出级别 log4j.logger.org.mybatis = DEBUG log4j.logger.java.sql = DEBUG log4j.logger.java.sql.Statement = DEBUG log4j.logger.java.sql.ResultSet = DEBUG log4j.logger.java.sql.PrepareStatement = DEBUG
2.3 配置log4j为日志的实现
<settings> <!--标准的日志工厂实现--> <setting name="logImpl" value="LOG4J"/> </settings>
2.4 log4j的使用
直接测试运行。可以和前面的测试对比以下。
3. 简单使用
3.1 导包
我们在要使用Log4j的类中,导入import org.apache.log4j.Logger;这个包千万别导错
3.2 日志对象
参数为当前类的class
static Logger logger = Logger.getLogger(UserMapperTest.class);
3.3 日志级别
logger.info("info:进入了testLog4j方法"); logger.debug("debug:进入了testLog4j"); logger.error("error:进入了testLog4j");
3.4 测试
import com.hxl.pojo.User; import com.hxl.util.MybatisUtils; import org.apache.ibatis.session.SqlSession; import org.apache.log4j.Logger; import org.junit.Test; public class UserMapperTest { static Logger logger = Logger.getLogger(UserMapperTest.class); @Test public void testLog4j(){ logger.info("info:进入了testLog4j方法"); logger.debug("debug:进入了testLog4j"); logger.error("error:进入了testLog4j"); } }
我们有了日志对象我们就可以在测试类或者其他地方使用
@Test public void getUserById(){ //获得SqlSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); logger.info("进入了getUserById方法"); //我们获得到对象,要拿到sql要么去dao拿要么去mapper中拿,但其实都一样 //下面我们get到他的接口,返回接口类型 //getMapper 执行sql UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = userMapper.getUserById(1); //方式2:直接通过里面的select,根据返回值的来进行。不推荐使用 //<User> userList = sqlSession.selectList("com.hxl.dao.UserDao.getUserList"); System.out.println(user); //关闭SQLSession sqlSession.close(); }