原因:持久层框架对于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