Logback日志记录只在控制台输出sql,未写入日志文件【解决】
作者:mmseoamin日期:2023-12-18

原因:持久层框架对于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是日志文件

Logback日志记录只在控制台输出sql,未写入日志文件【解决】,在这里插入图片描述,第1张

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可用得日志实现类

Logback日志记录只在控制台输出sql,未写入日志文件【解决】,在这里插入图片描述,第2张

这些都不满足得可以实现Log接口自己写实现了或者继承NoLoggingImpl重写内部方法

同时附上一个logback-spring.xml配置或许用的上



    
    
    
    
    logback
    
    
    
        
    
    
        
    
    
    
    
    
        
        
        
            INFO
        
        
            
            ${CONSOLE_LOG_PATTERN}
            
            UTF-8
        
    
    
    
        
        ${log.path}/log_info.log
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            UTF-8
        
        
        
            
            ${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log
            
                100MB
            
            
            30
        
        
        
            INFO
            ACCEPT
            DENY
        
    
    
    
        ${log.path}/log_warn.log
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            UTF-8
        
        
        
            ${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log
            
                100MB
            
            
            30
        
        
        
            warn
            ACCEPT
            DENY
        
    
    
    
        ${log.path}/log_error.log
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            UTF-8
        
        
        
            ${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log
            
                100MB
            
            
            30
        
        
        
            ERROR
            ACCEPT
            DENY
        
    
    
    
        ${log.path}/log_sql.log
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            UTF-8
        
        
        
            ${log.path}/sql/log-sql-%d{yyyy-MM-dd}.%i.log
            
                100MB
            
            
            30
        
        
        
            DEBUG
            ACCEPT