Logback日志记录只在控制台输出sql,未写入日志文件【解决】

Logback 日志配置问题导致SQL仅在控制台输出,未写入日志文件。原因在于持久层框架对Log接口实现不同,如 StdOutImpl 和 Slf4jImpl 的输出区别。解决方案是按环境配置,如开发环境用 StdOutImpl,生产环境用 Slf4jImpl。Log接口的实现可自定义,例如针对 MyBatis 或 MP。提供 logback-spring.xml 示例配置供参考。
摘要由CSDN通过智能技术生成

原因:持久层框架对于Log接口实现方式不一样,日记记录的位置及展示方式也也不一样

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # sql只会打印到控制台不会输出到日志文件种

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl  # 此种会将sql写入到日志文件中

可以分别配置到两个环境中,dev用StdOutImpl,prod用Slf4jImpl或者其他的都行,具体需要看他是如何实现的,使用logger对象输出的都是会写入日志的,使用System.out或err的只会在控制台显示,以下是实验.log是日志文件

在这里插入图片描述

StdOutImpl和Slf4jImpl的区别就在于实现输出方面的区别

** Slf4jImpl **
import org.apache.ibatis.logging.Log;
public class Slf4jImpl implements Log {
   
// 部分代码
  private Log log;
	 @Override
  public void error(String s) {
   
    log.error(s);
  }
  @Override
  public void debug(String s) {
   
    log.debug(s);
  }
} 

**StdOutImpl 使用的是System.out/err输出**
public class StdOutImpl implements Log {
   
// 部分代码
  @Override
  public void error(String s) {
   
    System.err.println(s);
  }
  @Override
  public void debug(String s) {
   
    System.out.println(s);
  }
}

包括以下接口逗是属于mp活着mybatis可用得日志实现类
在这里插入图片描述
这些都不满足得可以实现Log接口自己写实现了或者继承NoLoggingImpl重写内部方法
同时附上一个logback-spring.xml配置或许用的上

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="10 seconds">
    <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
    <!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
    <!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
    <!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->

    <contextName>logback</contextName>
    <!-- 全局属性:name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
    <!--  日志文件路径属性,不同环境日志输出位置不一样  -->
    <springProfile name="dev">
        <property name="log.path" value="./logs"/>
    </springProfile>
    <springProfile name="prod">
        <property name="log.path" value="./logs
  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值