Spring Boot 中Logback 配合mybatis 输出sql

1.log级别:由高到低  OFF,FATAL,ERROR,WARN,INFO,DEBUG,TRACE,ALL。

ALL :最低等级,打开所有记录。

TARCE:低级别的日志记录,一般不使用。

DEBUG:程序中细粒度信息的调试或运行信息。

INFO:粗粒度的运行或调试信息。

WARN:警告信息。

ERROR:程序中的错误信息,但仍然不影响系统的决心运行。

FATAL:程序直接退出,重大错误。

OFF:用于关闭所有日志记录。

高级别的不会输出低级别的日志信息,低级别的会输出高级别的日志信息。

例:设置error, WARN INFO DEBUG TRACE ALL级别不会输出。

现在实践在springBoot logback 输出mybatis sql,第一步当然是添加依赖

        <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-logging</artifactId>

        </dependency>

第二步:采用自定义日志配置logback-spring.xml,完整代码如下

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true"  scanPeriod="60 seconds" debug="false">
   <contextName>logback-mybatis</contextName>
   <!-- 定义日志文件 输入位置 -->  
    <property name="log.path" value="C:\\web\\log\\my-mybatis.log" />
   <!-- 自定义输出  -->
   <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
   </appender>
   
   <!--输出到文件-->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logback.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>


    <root level="info">
        <appender-ref ref="console" />
        <appender-ref ref="file" />
    </root>
    <!-- 具体到某一个包下,以何种级别打印日志,additivity 表示打印是否向上一级传递 -->
    <logger name="com.springboot.example.springBootmybatis.controller" level="WARN" additivity="false">
        <appender-ref ref="console"/>
    </logger>-->
    
    <!-- 注意  additivity(默认为ture) 为ture-->
    <logger name="com.springboot.example.springBootmybatis.mapper" level="DEBUG" additivity="ture"></logger>
    
    <!-- 测试环境+开发环境. 多个使用逗号隔开. -->
    <springProfile name="test,dev">
        <logger name="com.springboot.example.springBootmybatis.controller" level="info" />
    </springProfile>
    <!-- 生产环境. -->
    <springProfile name="prod">
        <logger name="com.springboot.example.springBootmybatis.controller" level="ERROR" />
    </springProfile>
    

</configuration>

然后在properties,或yml中配置

logging.level.root=INFO

logging.level.com.springboot=INFO

logging.config=classpath:logback-spring.xml

运行,保存日志到指定文件中并得出结果(见下图)



/******************************************log4j的实现(ssm框架下)**********************/

1.添加依赖,强调一下,slf4j-api版本不能超过1.8,不然会出现:

SLF4J:没有找到SLF4J提供者。SLF4J:默认为无操作(NOP)日志记录器实现。因为SLF4J:类路径包含SLF4J绑定,目标是在1.8之前的SLF4J -api版本。

   <!-- log4j 日志-->
       <dependency>  
          <groupId>log4j</groupId>  
          <artifactId>log4j</artifactId>  
          <version>1.2.17</version>  
       </dependency>
       <dependency>  
           <groupId>org.slf4j</groupId>  
           <artifactId>slf4j-log4j12</artifactId>  
           <version>1.7.7</version>  
       </dependency> 
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.25</version>
</dependency>

2.web.xml 添加监听  

<listener>

          <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
   </listener>
   <context-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>classpath*:/log4j.xml</param-value>

   </context-param>

3.log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE log4j:configuration  PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">


     
     <!-- APPENDER 控制台 -->
     <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
          <param name="Target" value="System.out" />
          <layout class="org.apache.log4j.PatternLayout">
              <param name="ConversionPattern" value="[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} %c{1} - %m%n" />
          </layout>
     </appender>
     
        <!--输出到文件-->
    <appender name="file" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="${webapp.root}/logs/ccdproject.log" />
        <param name="append" value="true" />
        <param name="encoding" value="UTF-8" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} %c{1} - %m%n" />
         </layout>
    </appender>
    
    <logger name="com.ccdproject.mapper">
         <level value="DEBUG" />
         <appender-ref ref="CONSOLE" />
    </logger>
        <logger name="com.ccdproject.controller">
         <level value="DEBUG" />
         <appender-ref ref="CONSOLE" />
    </logger>


</log4j:configuration>

结果同上:

一些具体配置可参考:

https://www.cnblogs.com/wangdaijun/p/7054114.html 写的很详细,点个赞

https://blog.csdn.net/draven1122/article/details/77505631 也很不错





猜你喜欢

转载自blog.csdn.net/koyi0000/article/details/80006693