ssm添加logback日志实现,整合pagehelper分页插件

ssm整合logback日志

ssm环境搭建看着ssm整合

resource文件夹下创建logback.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 定义参数常量 -->
    <!-- 日志级别 TRACE<DEBUG<INFO<WARN<ERROR -->
    <!-- logger.trace("msg") logger.debug... -->
    <property name="log.level" value="debug"/>
    <property name="log.maxHistory" value="30"/>
    <property name="log.filePath" value="F:/log"/>
    <property name="log.pattern"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level%logger{50} - %msg%n"/>
    <!-- 控制台输出设置 -->
    <appender name="consoleAppender"
              class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
    <!-- DEBUG级别文件记录 -->
    <appender name="debugAppender"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 文件路径 -->
        <file>${log.filePath}/debug.log</file>
        <!-- 滚动日志文件类型,就是每天都会有一个日志文件 -->
        <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 文件名称 -->
            <fileNamePattern>${log.filePath}/debug/debug.%d{yyyy-MMdd}.log.gz
            </fileNamePattern>
            <!-- 文件最大保存历史数量 -->
            <maxHistory>${log.maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!-- INFO -->
    <appender name="infoAppender"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 文件路径 -->
        <file>${log.filePath}/info.log</file>
        <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 文件名称 -->
            <fileNamePattern>${log.filePath}/info/info.%d{yyyy-MM-dd}.log.gz
            </fileNamePattern>
            <!-- 文件最大保存历史数量 -->
            <maxHistory>${log.maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!-- INFO -->
    <appender name="errorAppender"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 文件路径 -->
        <file>${log.filePath}/error.log</file>
        <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 文件名称 -->
            <fileNamePattern>${log.filePath}/error/error.%d{yyyy-MM-dd}.log.gz
            </fileNamePattern>
            <!-- 文件最大保存历史数量 -->
            <maxHistory>${log.maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!-- cn.kongwg开头的日志对应形式 -->
    <logger name="cn.kongwg" level="${log.level}" additivity="true">
        <appender-ref ref="debugAppender"/>
        <appender-ref ref="infoAppender"/>
        <appender-ref ref="errorAppender"/>
    </logger>
    <!-- <root> 是必选节点,用来指定最基础的日志输出级别,只有一个level属性 -->
    <root level="info">
        <appender-ref ref="consoleAppender"/>
    </root>
    <!-- 捕捉sql开头的日志 -->
    <appender name="MyBatis"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.filePath}/sql_log/mybatis-sql.log</file>

        <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${log.filePath}/sql_log/mybatissql.log.%d{yyyy-MM-dd}</FileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder
                class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%thread|%d{yyyy-MM-dd HH:mm:ss.SSS}|%level|%logger{36}|%m%n
            </pattern>
        </encoder>
    </appender>
    <logger name="sql" level="DEBUG">
        <appender-ref ref="MyBatis"/>
    </logger>
</configuration>
  • 在controller中添加方法(这里的slf4j是lombok插件的注解
 package cn.kongwg.controller;

import cn.kongwg.entity.Books;
import cn.kongwg.service.BookService;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author kongwg
 * @create 2021-03-11 15:51
 */
@Controller
@RequestMapping("/book")
@Slf4j
public class BookController {


    @Autowired
    private BookService bookService;

    @GetMapping("/hello")
    @ResponseBody
    public String hello() {
        log.trace("this is trace");
        log.info("this is info");
        log.debug("this is debug");
        log.warn("this is warn");
        log.error("this is error");
        bookService.findAllBook();
        return "hello";
    }
}

  • 浏览器访问映射地址
    控制台可以看见
2021-03-11 22:40:42.695 [http-nio-8080-exec-4] INFO org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'SpringMvc'
2021-03-11 22:40:48.315 [http-nio-8080-exec-4] INFO org.springframework.web.servlet.DispatcherServlet - Completed initialization in 5615 ms
2021-03-11 22:40:48.376 [http-nio-8080-exec-4] INFO cn.kongwg.controller.BookController - this is info
2021-03-11 22:40:48.377 [http-nio-8080-exec-4] DEBUGcn.kongwg.controller.BookController - this is debug
2021-03-11 22:40:48.377 [http-nio-8080-exec-4] WARN cn.kongwg.controller.BookController - this is warn
2021-03-11 22:40:48.377 [http-nio-8080-exec-4] ERRORcn.kongwg.controller.BookController - this is error
2021-03-11 22:40:48.606 [http-nio-8080-exec-4] WARN com.alibaba.druid.pool.DruidDataSource - removeAbandoned is true, not use in productiion.
2021-03-11 22:40:49.221 [http-nio-8080-exec-4] INFO com.alibaba.druid.pool.DruidDataSource - {dataSource-1} inited
2021-03-11 22:40:49.239 [http-nio-8080-exec-4] DEBUGsql.cn.kongwg.dao.BookMapper.findAllBook - ==>  Preparing: select bookID, bookName, bookCounts, detail from ssmbook.books 
2021-03-11 22:40:49.489 [http-nio-8080-exec-4] DEBUGsql.cn.kongwg.dao.BookMapper.findAllBook - ==> Parameters: 
2021-03-11 22:40:49.525 [http-nio-8080-exec-4] DEBUGsql.cn.kongwg.dao.BookMapper.findAllBook - <==      Total: 4
  • 本地文件可以看见
    在这里插入图片描述

ssm整合pagehelper

  • 添加依赖
<!--分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.2.0</version>
        </dependency>
  • 在spring的配置文件中SqlSessionFactoryBean中添加拦截器(我这使用的是mysql)
 <!--配置分页插件pagehelper的拦截器-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注意其他配置 -->
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <!--使用下面的方式配置参数,一行配置一个 -->
                        <value>
                            helperDialect=mysql
                        </value>
                    </property>
                </bean>
            </array>
        </property>
    </bean>

业务编写

  • service接口中添加
 PageInfo<Books> pageBook(Integer pageNum, Integer pageSize);
  • 在serviceImpl中添加实现
@Override
    public PageInfo<Books> pageBook(Integer pageNum, Integer pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        List<Books> allBook = bookMapper.findAllBook();
        return new PageInfo<>(allBook);
    }
  • controller中添加(用@ResponseBody可以不走视图解析器)
 @GetMapping("/page")
    @ResponseBody
    public String pageBook(@RequestParam("pageNum") Integer pageNum, @RequestParam("pageSize") Integer pageSize) {
        PageInfo<Books> booksPageInfo = bookService.pageBook(pageNum, pageSize);
        String pageBook = JSON.toJSONString(booksPageInfo);
        return pageBook;
    }
  • 结果
    在这里插入图片描述

    在这里插入图片描述

简单使用,详细使用可以看官方文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值