Mybatis也有日志系统,它详细记录了所有的数据库操作等,通过配置xml文件来打开日志系统
"logImpl" value="STDOUT_LOGGING" />
`logImpl`包括很多种配置项,包括 SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING,而默认情况下是未配置,也就是说不打印
- public class TestMain {
-
- private SqlSessionFactory sqlSessionFactory;
- @Before
- public void before(){
- try {
- sqlSessionFactory = new SqlSessionFactoryBuilder()
- .build(new FileInputStream("mybatis-config.xml"));
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- }
-
- @Test
- public void test(){
- try(SqlSession sqlSession = sqlSessionFactory.openSession(true)){
- TestMapper mapper = sqlSession.getMapper(TestMapper.class);
- System.out.println(mapper.getStudentBySidAndSex(1, "男"));
- System.out.println(mapper.getStudentBySidAndSex(1, "男"));
- }
- }
- }
两次获取学生信息,只有第一次打开了数据库连接,而第二次并没有
将其配置为JDK_LOGGING表示使用JUL进行日志打印,因为Mybatis的日志级别都比较低,因此我们需要设置一下`logging.properties`默认的日志级别
<setting name="logImpl" value="JDK_LOGGING" />
handlers= java.util.logging.ConsoleHandler
.level= ALL
java.util.logging.ConsoleHandler.level = ALL
- @Log
- public class TestMain {
-
- private SqlSessionFactory sqlSessionFactory;
- @Before
- public void before(){
- try {
- sqlSessionFactory = new SqlSessionFactoryBuilder()
- .build(new FileInputStream("mybatis-config.xml"));
- LogManager manager = LogManager.getLogManager();
- manager.readConfiguration(new FileInputStream("logging.properties"));
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- @Test
- public void test(){
- try(SqlSession sqlSession = sqlSessionFactory.openSession(true)){
- TestMapper mapper = sqlSession.getMapper(TestMapper.class);
- log.info(mapper.getStudentBySidAndSex(1, "男").toString());
- log.info(mapper.getStudentBySidAndSex(1, "男").toString());
- }
- }
- }
可以修改一下日志格式
- public class TestFormatter extends Formatter {
- @Override
- public String format(LogRecord record) {
- SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
- String time = format.format(new Date(record.getMillis())); //格式化日志时间
- return time + " : " + record.getMessage() + "\n";
- }
- }
再修改properties文件
handlers= java.util.logging.ConsoleHandler
.level= ALL
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = com.test.TestFormatter