springboot配置ym管理各种日记(log)

1:yml配置mybatis_plus默认日记框架

mybatis-plus:
  #这个作用是扫描xml文件生效可以和mapper接口文件使用,
  #如果不加这个,就无法使用xml里面的sql语句
  #启动类加了@MapperScan是扫描指定包下mapper接口生效,如果不用@MapperScan可以在每一个mapper接口添加@Mapper注解
  mapper-locations: classpath*:com/example/poi/mapper/**/xml/*Mapper.xml
  global-config:
    # 关闭MP3.0自带的banner
    banner: false
    db-config:
      #主键类型
      id-type: ASSIGN_ID
      # 默认数据库表下划线命名
      table-underline: true
  configuration:
    # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    # 返回类型为Map,显示null对应的字段
    call-setters-on-nulls: true

logging:
  level:
  	# 日记级别,设置的越小捕抓的信息越多 trace<debug<info<warn<error
    #root 键指定了根日志记录器的级别为 INFO
    root: INFO
    #com.baomidou.mybatisplus 包下的日志记录器级别为 DEBUG
    com.baomidou.mybatisplus: INFO
  file:
  	#保留了最近 30 天的日志
    max-history: 30
    #每个日记大小,当日记达到100M但还没到达下一天就生成一个新的文件按i序号
    max-size: 100MB
    #保存日记实际路径,确保指定的路径对应的目录已存在,并具有具有的写入权限
    pattern: /home/app/logs//mybatis-%d{yyyy-MM-dd}-%i.log
    #设置日志文件夹存储总大小的上限,超过就删除旧的
    total-size-cap: 1GB

在这里插入图片描述

1-1: 如果不需要控制台打印parsee mapper file之类信息,可以修改mabatis日记框架,不使用默认StdOutImpl,使用Slf4jImpl,同时加上logiing管理日记,如下

#注意区分是mybatis还是mybatis-plus
mybatis-plus:
  configuration:
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
    call-setters-on-nulls: true
  logging:
  level:
    root: info
    com.baomidou.mybatisplus: debug
  path: G:\temptemptemp\logs
  • 这个可以设计日记在控制台输出,如果日记输出最小为debug日记,如果设计日记级别高就不输出,设置级别底trace也是日记最小输出debug
  • 可以设置日记自己权重打印相应信息出来,查看项目启动情况,trace<debug<info<warn<error

2:方法一使用logback-spring.xml生成日记管理,在resource项目下生成文件,文件内容如下

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 日志文件路径 -->
    <springProperty scope="context" name="logPath" source="log.logPath"/>
    <!-- 日志文件名称 -->
    <springProperty scope="context" name="logName" source="log.logName"/>

<!--    <logger name="org.springframework.web" level="WARN"/>-->
<!--    <logger name="org.springboot.sample" level="WARN"/>-->
<!--    <logger name="com.example.poi" level="INFO"/>-->
<!--    这个是可以输出mybatis信息,要在yml配置mybatis的日记框架-->
<!--    <logger name="org.mybatis" level="INFO"/>-->

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level -&#45;&#45; [%thread] %logger Line:%-3L - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="WEB_CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level -&#45;&#45; [%thread] %logger Line:%-3L - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- debug 日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文档的路径及文档名 -->
        <file>${logPath}${logName}.log</file>
        <!--日志文档输出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level -&#45;&#45; [%thread] %logger Line:%-3L - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档 -->
            <fileNamePattern>${logPath}${logName}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>256MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>1</maxHistory>
        </rollingPolicy>
    </appender>

    <root level="INFO">
        <appender-ref ref="FILE"/>
        <appender-ref ref="CONSOLE"/>
<!--        <appender-ref ref="WEB_CONSOLE"/>-->
    </root>

</configuration>


< root> 是用来设置默认的日志级别和输出目标,而 < logger> 则是用来针对特定的包或类进行更细粒度的日志配置。两者都可以设置 level 属性,但 < logger> 的级别配置会覆盖 < root> 的默认级别

2-1:如果控制台需要输出mybatis的具体sql信息需要在yml配置mybatis的日记输出框架

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#Mybatis输出sql日志,trace可以输出sql的结果
logging:
  level:
    com.example.poi.mapper: trace
  • System.out.println不能打印到输出日记

  • trace可以输出sql语句,参数,结果,info没有sql结果

2-2:如果要将sql执行记录输出到日记,需要在配置日记输出指定mapper路径,如下

logging:
  level:
    root: info
    com.baomidou.mybatisplus: info
    com.example.poi.mapper: info
  path: G:\temptemptemp\logs

在这里插入图片描述

3:方法二使用logback-spring.xml生成日记管理

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">

    <!-- 彩色日志 -->
    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <!-- 彩色日志格式 -->
    <property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }) [%t]{magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex"/>
    <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } --- [%t] %-40.40logger{39} : %m%n%wex"/>
     
    <!--多环境的日志输出-->
    <!--根据不同环境(prod:生产环境,test:测试环境,dev:开发环境)来定义不同的日志输出,-->
    <!--在 logback-spring.xml中使用 springProfile 节点来定义,方法如下:-->
    <springProperty scope="context" name="logPath" source="custom.log.path" defaultValue="./newLogs"/>
    <springProperty scope="context" name="logLevel" source="custom.log.level" defaultValue="INFO"/>
    <property name="LOG_HOME" value="${logPath}" />
    <property name="LOG_LEVEL" value="${logLevel}" />
    <!--输出到控制台-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>
    <!--info 级别的日志-->    
    <!-- 按照每天生成日志文件 -->    
    <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
    	<!-- 正在记录的日志文档的路径及文档名 -->
        <file>${LOG_HOME}/info.log</file>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档 -->
            <fileNamePattern>${LOG_HOME}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>180</maxHistory>
        </rollingPolicy>
    </appender>
    <!--WARN 级别的日志-->
    <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
    	<!-- 正在记录的日志文档的路径及文档名 -->
        <file>${LOG_HOME}/warn.log</file>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档 -->
            <fileNamePattern>${LOG_HOME}/warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>180</maxHistory>
        </rollingPolicy>
    </appender>
    <!--ERROR 级别的日志-->
    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
     	<!-- 正在记录的日志文档的路径及文档名 -->
        <file>${LOG_HOME}/error.log</file>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档 -->
            <fileNamePattern>${LOG_HOME}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>180</maxHistory>
        </rollingPolicy>
    </appender>
    <!-- 日志输出级别 -->
    <root level="${LOG_LEVEL}">
    	<appender-ref ref="CONSOLE"/>
        <appender-ref ref="INFO"/>
        <appender-ref ref="WARN"/>
        <appender-ref ref="ERROR"/>
    </root>
</configuration>

3-1:yml配置日记路径

custom:
  log:
    level: INFO                      
    path: ./logs                      

3-2:使用logback-spring.xml需要排除掉全部的log4j依赖包,可以通过maven helper查找出来并且排除掉

3-3:添加依赖

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
</dependency>

4:打印sql语句的查询语句,参数,结果,需要这样配置

如果你想要打印SQL的执行结果,而不仅仅是SQL语句本身,你需要配置Spring框架的数据源日志级别。在Spring Boot中,你可以通过在 application.properties 或 application.yml 文件中添加以下配置来启用SQL结果的打印:在 application.properties 中添加:

#指定目录,trace可以查询sql结果
logging.level.com.hdx.door=DEBUG
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

在 application.yml 中添加:

#指定目录
logging:
  level:
    com:
     hdx:
       #trace可以查询sql结果
       door: DEBUG
spring:
  jpa:
    show-sql: true
    properties:
      hibernate:
        format_sql: true
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值