• Mybatis日志系统


    Mybatis也有日志系统,它详细记录了所有的数据库操作等,通过配置xml文件来打开日志系统

    "logImpl" value="STDOUT_LOGGING" />

    `logImpl`包括很多种配置项,包括 SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING,而默认情况下是未配置,也就是说不打印

    1. public class TestMain {
    2. private SqlSessionFactory sqlSessionFactory;
    3. @Before
    4. public void before(){
    5. try {
    6. sqlSessionFactory = new SqlSessionFactoryBuilder()
    7. .build(new FileInputStream("mybatis-config.xml"));
    8. } catch (FileNotFoundException e) {
    9. e.printStackTrace();
    10. }
    11. }
    12. @Test
    13. public void test(){
    14. try(SqlSession sqlSession = sqlSessionFactory.openSession(true)){
    15. TestMapper mapper = sqlSession.getMapper(TestMapper.class);
    16. System.out.println(mapper.getStudentBySidAndSex(1, "男"));
    17. System.out.println(mapper.getStudentBySidAndSex(1, "男"));
    18. }
    19. }
    20. }

    两次获取学生信息,只有第一次打开了数据库连接,而第二次并没有

    将其配置为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

    1. @Log
    2. public class TestMain {
    3. private SqlSessionFactory sqlSessionFactory;
    4. @Before
    5. public void before(){
    6. try {
    7. sqlSessionFactory = new SqlSessionFactoryBuilder()
    8. .build(new FileInputStream("mybatis-config.xml"));
    9. LogManager manager = LogManager.getLogManager();
    10. manager.readConfiguration(new FileInputStream("logging.properties"));
    11. } catch (IOException e) {
    12. e.printStackTrace();
    13. }
    14. }
    15. @Test
    16. public void test(){
    17. try(SqlSession sqlSession = sqlSessionFactory.openSession(true)){
    18. TestMapper mapper = sqlSession.getMapper(TestMapper.class);
    19. log.info(mapper.getStudentBySidAndSex(1, "男").toString());
    20. log.info(mapper.getStudentBySidAndSex(1, "男").toString());
    21. }
    22. }
    23. }

    可以修改一下日志格式

    1. public class TestFormatter extends Formatter {
    2. @Override
    3. public String format(LogRecord record) {
    4. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
    5. String time = format.format(new Date(record.getMillis())); //格式化日志时间
    6. return time + " : " + record.getMessage() + "\n";
    7. }
    8. }

    再修改properties文件

    handlers= java.util.logging.ConsoleHandler

    .level= ALL

    java.util.logging.ConsoleHandler.level = ALL

    java.util.logging.ConsoleHandler.formatter = com.test.TestFormatter

  • 相关阅读:
    ThreadLocal
    C语言用awtk开发界面访问http接口
    Mysql时间操作
    notepad++配合正则表达式分组模式处理文本转化为sql语句
    【图解计算机网络】从浏览器地址输入到网页显示的整个过程
    【SpringBoot项目】一文掌握文件上传和下载【业务开发day04】
    尚好房 11_Session共享
    Android 解析APK包
    双软企业政策
    C++读写锁
  • 原文地址:https://blog.csdn.net/weixin_51992178/article/details/126486075