spring-boot配置slf4j分区日志

妖狐艹你老母 2023-02-15 03:45 80阅读 0赞

一、说明:SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J 是一个用于日志系统的简单 Facade,允许最终用户在部署其应用时使用其所希望的日志系统。spring-boot内部已经集成了slf4j,所以我们只要对slf4j做下简单的配置即可。

二、配置:

1、首先我们需要一个文件用来做日志相关的配置:

  1. <configuration>
  2. <!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
  3. <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
  4. <!-- 定义日志存储的路径,不要配置相对路径 -->
  5. <property name="FILE_PATH" value="usr/logs/demo.%d{yyyy-MM-dd}.%i.log" />
  6. <!-- 控制台输出日志 -->
  7. <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
  8. <encoder>
  9. <!-- 按照上面配置的LOG_PATTERN来打印日志 -->
  10. <pattern>${LOG_PATTERN}</pattern>
  11. </encoder>
  12. </appender>
  13. <!--每天生成一个日志文件,保存15天的日志文件。rollingFile是用来切分文件的 -->
  14. <appender name="FILE"
  15. class="ch.qos.logback.core.rolling.RollingFileAppender">
  16. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  17. <fileNamePattern>${FILE_PATH}</fileNamePattern>
  18. <!-- keep 15 days' worth of history -->
  19. <maxHistory>15</maxHistory>
  20. <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  21. <!-- 日志文件的最大大小,超过这个大小重新生成一个文件 -->
  22. <maxFileSize>1MB</maxFileSize>
  23. </timeBasedFileNamingAndTriggeringPolicy>
  24. </rollingPolicy>
  25. <encoder>
  26. <pattern>${LOG_PATTERN}</pattern>
  27. </encoder>
  28. </appender>
  29. <!-- project default level -->
  30. <logger name="src" level="INFO" />
  31. <!-- 日志输出级别 常用的日志级别按照从高到低依次为:ERROR、WARN、INFO、DEBUG。 -->
  32. <root level="INFO">
  33. <appender-ref ref="CONSOLE" />
  34. <appender-ref ref="FILE" />
  35. </root>
  36. </configuration>

2、在application.properties文件中引入配置

  1. logging.config=classpath:logback.xml

3、在需要的地方打上日志即可,如:

  1. package com.demo.service.impl;
  2. import com.demo.dao.UserDao;
  3. import com.demo.dto.User;
  4. import com.demo.service.UserService;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Service;
  9. @Service("userService")
  10. public class UserServiceImpl implements UserService {
  11. private static final Logger logger = LoggerFactory.getLogger(UserServiceImpl.class);
  12. @Autowired
  13. private UserDao userDao;
  14. @Override
  15. public void insert(User user) {
  16. logger.warn("写入数据库");
  17. userDao.insertUser(user);
  18. }
  19. }

4、测试:我把1MB改成10KB放到服务器上测试,

20200604144222562.png

可以看到超过10KB,重新生成文件了。

三、SLF4J打印SQL:

在application.properties中加入:

  1. logging.level.dao所在的包=日志级别可以打印SQL日志,如我的:
  2. server.port=9999
  3. server.context-path=/quartzgroup
  4. logging.config=classpath:logback.xml
  5. #打印SQL日志
  6. logging.level.com.demo.dao=debug
  7. my.pool.url=jdbc:mysql://localhost:3306/quartzgroup?useUnicode=true&characterEncoding=utf8
  8. my.pool.username = root
  9. my.pool.password= wtyy
  10. my.pool.driver-class-name = com.mysql.jdbc.Driver
  11. my.pool.defaultAutoCommit = true
  12. my.pool.maxWait=60000
  13. my.pool.maxActive = 6
  14. my.pool.maxIdle = 5
  15. my.pool.minIdle = 2
  16. my.pool.initialSize = 3
  17. my.pool.validationQuery = SELECT 1
  18. my.pool.testWhileIdle = true
  19. my.pool.timeBetweenEvictionRunsMillis=60000
  20. my.pool.minEvictableIdleTimeMillis=30000
  21. my.pool.testOnBorrow=false
  22. my.pool.testOnReturn=false
  23. mybatis.mapper-locations=classpath*:Mapper/*Mapper.xml

日志如下:

20200604151141803.png

也可以通过xml来配置日志输出地方、SQL日志等:

  1. <configuration>
  2. <property name="log.dir" value="/data/log/test"/>
  3. <!--日志输出格式-->
  4. <!--<property name="LOG_PATTERN" VALUE="" />-->
  5. <!--控制台日志-->
  6. <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
  7. <!--控制台最低日志级别 debug-->
  8. <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  9. <level>debug</level>
  10. </filter>
  11. <encoder>
  12. <pattern>%date{yyyy-MM-dd HH:mm:ss} %highlight(%-5level) --- [%thread] %cyan((%file:%line\))- %msg%n</pattern>
  13. <!-- 控制台也要使用utf-8,不要使用gbk -->
  14. <charset>UTF-8</charset>
  15. </encoder>
  16. </appender>
  17. <!-- RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
  18. <!-- 1.先按日期存日志,日期变了,将前一天的日志文件名重命名为xxx%日期%索引,新的日志仍然是sys.log -->
  19. <!-- 2.如果日期没有变化,但是当前日志文件的大小超过1kb时,对当前日志进行分割 重名名 -->
  20. <appender name="SYSLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
  21. <File>${log.dir}/sys.log</File>
  22. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  23. <fileNamePattern>${log.dir}/sys.%d.%i.log</fileNamePattern>
  24. <!-- 每产生一个日志文件,该日志文件的保存期限为30天 -->
  25. <maxHistory>90</maxHistory>
  26. <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  27. <maxFileSize>500MB</maxFileSize>
  28. </timeBasedFileNamingAndTriggeringPolicy>
  29. </rollingPolicy>
  30. <encoder>
  31. <!-- pattern节点,用来设置日志的输入格式 -->
  32. <pattern>%date{yyyy-MM-dd HH:mm:ss} %highlight(%-5level) --- [%thread] %cyan((%file:%line\))- %msg%n</pattern>
  33. <!-- 记录日志的编码 -->
  34. <charset>UTF-8</charset> <!-- 此处设置字符集 -->
  35. </encoder>
  36. </appender>
  37. <!--SQL日志-->
  38. <logger name="com.demo.mapper" level="DEBUG" additivity="false">
  39. <appender-ref ref="SYSLOG" />
  40. <appender-ref ref="CONSOLE" />
  41. </logger>
  42. <logger name="com.demo.permission.mapper" level="DEBUG" additivity="false">
  43. <appender-ref ref="SYSLOG" />
  44. <appender-ref ref="CONSOLE" />
  45. </logger>
  46. <!-- 控制台、文件日志输出级别 -->
  47. <root level="info">
  48. <appender-ref ref="CONSOLE" />
  49. <appender-ref ref="SYSLOG" />
  50. </root>
  51. </configuration>

发表评论

表情:
评论列表 (有 0 条评论,80人围观)

还没有评论,来说两句吧...

相关阅读