springboot 整合logback实现日志出入到不同文件当中(含sql输出到制定文件中)

本文介绍如何在SpringBoot项目中配置Logback,实现日志按不同级别和内容分别写入不同的文件,包括SQL日志的单独记录。通过调整Mybatis的日志实现及Logback配置,确保在生产环境中方便地查看和分析日志。
摘要由CSDN通过智能技术生成

一 概述

1.1 概述

我们在本地开发,在配置文件中配置了Mybatis的相关参数,将sql语句输入到控制台上,但是在生产上我们为了排错或者查看sql的执行过程,就需要查看日志,所以Mybatis执行sql不仅要能在控制台打印输出,还要能写入日志文件待查。之前看过的好多博客只是解决了日志向控制台打印的问题。怎么将日志写到制定的文件,遇到了好了问题,无法将日志写到制定的文件中,
麻蛋,网上一堆资料,都是瞎比咧咧,解决不了问题,自己通过专研,终于实现了将日志输入到制定的文件当中。由于Mybatis执行sql的日志级别为DEBUG,一般生产上需要的日志级别为INFO及以上。如果将DEBUG级别日志全部写入日志文件,会造成日志查问题的速度降低,难度大大提高。

所以建议:将Mybatis执行sql的日志只能向更高日志级别的日志文件追加或单独写入一个文件。

1.2 解决办法

当时配置好springboot和logback,无法将mybaits的sql语句写入到制定文件的原因是,日志的输出方式没有配对

  log-impl: org.apache.ibatis.logging.stdout.StdOutImpl     改为:log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl

应该配置成:

1.3 logback中onmatch与onmismatch的区别

二 案例演示 

2.1 项目结构

2.2.代码说明

2.2.1pom文件

 <!-- springBoot的启动器 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>2.0.1.RELEASE</version>
    </dependency>
    <!-- web启动器 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
      <version>2.0.1.RELEASE</version>
    </dependency>
    <!-- Mybatis启动器 -->
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>1.1.1</version>
    </dependency>
    <!-- mysql数据库驱动 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.3</version>
    </dependency>
    <!-- druid数据库连接池 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.0.9</version>
    </dependency>

2.2.2 controller层

package com.ljf.spring.boot.demo.persistence.controller;

import com.ljf.spring.boot.demo.persistence.model.Users;
import com.ljf.spring.boot.demo.persistence.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

/**
 * @ClassName: UserController
 * @Description: TODO
 * @Author: liujianfu
 * @Date: 2020/07/29 15:45:36
 * @Version: V1.0
 **/
@Controller
@RequestMapping("/users")
public class UserController {
    private static final Logger logger = LoggerFactory.getLogger(UserController.class);
    @Autowired
    private UserService usersService;

    /**
     * 页面跳转
     */
    @RequestMapping("/{page}")
    public String showPage(@PathVariable String page){
        System.out.println("进来了!!!"+page);
        return page;
    }

    /**
     * 添加用户
     */
    @RequestMapping("/addUser")
    public String addUser(Users users){
        System.out.println("users:"+users.getName());
        this.usersService.addUser(users);
        return "ok";
    }

    /**
     * 查询全部用户
     */
    @RequestMapping("/findUserAll")
    public String findUserAll(Model model){
        logger.info("=========================================查询全部用户信息!!!!!!!!!!!!!!!!!!!!!");
        List<Users> list = this.usersService.findUserAll();
        model.addAttribute("list", list);
        return "showUsers";
    }
    /**
     * 根据用户id查询用户
     */
    @RequestMapping("/findUserById")
    public String findUserById(Integer id,Model model){
        Users
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值