Spring Boot 日志配置

╰+攻爆jí腚メ 2021-09-21 02:32 483阅读 0赞

Spring Boot支持 JavaUtil Logging、 Log4J、 Log4J2和 Logback作为日志框架,无论使用哪种日志框架, Spring Boot已为当前使用日志框架的控制台输出及文件输出做好了配置,默认情况下, Spring Boot使用 Logback作为日志框架。

配置 logback(官方推荐使用)

配置日志文件

spring boot 默认会加载 classpath:logback-spring.xml 或者 classpath:logback-spring.groovy。

如需要自定义文件名称,在 application.properties 中配置 logging.config 选项即可。

在 src/main/resources 下创建 logback-spring.xml 文件,内容如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <!-- 文件输出格式 -->
  4. <property name="PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n" />
  5. <!-- test文件路径 -->
  6. <property name="TEST_FILE_PATH" value="d:/test.log" />
  7. <!-- pro文件路径 -->
  8. <property name="PRO_FILE_PATH" value="/opt/test/log" />
  9. <!-- 开发环境 -->
  10. <springProfile name="dev">
  11. <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
  12. <encoder>
  13. <pattern>${PATTERN}</pattern>
  14. </encoder>
  15. </appender>
  16. <logger name="com.light.springboot" level="debug" />
  17. <root level="info">
  18. <appender-ref ref="CONSOLE" />
  19. </root>
  20. </springProfile>
  21. <!-- 测试环境 -->
  22. <springProfile name="test">
  23. <!-- 每天产生一个文件 -->
  24. <appender name="TEST-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  25. <!-- 文件路径 -->
  26. <file>${TEST_FILE_PATH}</file>
  27. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  28. <!-- 文件名称 -->
  29. <fileNamePattern>${TEST_FILE_PATH}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
  30. <!-- 文件最大保存历史数量 -->
  31. <MaxHistory>100</MaxHistory>
  32. </rollingPolicy>
  33. <layout class="ch.qos.logback.classic.PatternLayout">
  34. <pattern>${PATTERN}</pattern>
  35. </layout>
  36. </appender>
  37. <root level="info">
  38. <appender-ref ref="TEST-FILE" />
  39. </root>
  40. </springProfile>
  41. <!-- 生产环境 -->
  42. <springProfile name="prod">
  43. <appender name="PROD_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  44. <file>${PRO_FILE_PATH}</file>
  45. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  46. <fileNamePattern>${PRO_FILE_PATH}/warn.%d{yyyy-MM-dd}.log</fileNamePattern>
  47. <MaxHistory>100</MaxHistory>
  48. </rollingPolicy>
  49. <layout class="ch.qos.logback.classic.PatternLayout">
  50. <pattern>${PATTERN}</pattern>
  51. </layout>
  52. </appender>
  53. <root level="warn">
  54. <appender-ref ref="PROD_FILE" />
  55. </root>
  56. </springProfile>
  57. </configuration>

其中,springProfile 标签的 name 属性对应 application.properties 中的 spring.profiles.active 的配置。即 spring.profiles.active 的值可以看作是日志配置文件中对应的 springProfile 是否生效的开关。

配置 log4j2

添加依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-log4j2</artifactId>
  4. </dependency>

配置日志文件

spring boot 默认会加载 classpath:log4j2.xml 或者 classpath:log4j2-spring.xml。

如需要自定义文件名称,在 application.properties 中配置 logging.config 选项即可。

log4j2.xml 文件内容如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <configuration>
  3. <properties>
  4. <!-- 文件输出格式 -->
  5. <property name="PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %c [%L] -| %msg%n</property>
  6. </properties>
  7. <appenders>
  8. <Console name="CONSOLE" target="system_out">
  9. <PatternLayout pattern="${PATTERN}" />
  10. </Console>
  11. </appenders>
  12. <loggers>
  13. <logger name="com.light.springboot" level="debug" />
  14. <root level="info">
  15. <appenderref ref="CONSOLE" />
  16. </root>
  17. </loggers>
  18. </configuration>

log4j2 不能像 logback 那样在一个文件中设置多个环境的配置数据,只能命名 3 个不同名的日志文件,分别在 application-dev,application-test 和 application-prod 中配置 logging.config 选项。

除了在日志配置文件中设置参数之外,还可以在 application-*.properties 中设置,日志相关的配置:

  1. logging.config # 日志配置文件路径,如 classpath:logback-spring.xml
  2. logging.exception-conversion-word # 记录异常时使用的转换词
  3. logging.file # 记录日志的文件名称,如:test.log
  4. logging.level.* # 日志映射,如:logging.level.root=WARN,
  5. logging.level.org.springframework.web=DEBUG
  6. logging.path # 记录日志的文件路径,如:d:/
  7. logging.pattern.console # 向控制台输出的日志格式,只支持默认的 logback 设置。
  8. logging.pattern.file # 向记录日志文件输出的日志格式,只支持默认的 logback 设置。
  9. logging.pattern.level # 用于呈现日志级别的格式,只支持默认的 logback 设置。
  10. logging.register-shutdown-hook # 初始化时为日志系统注册一个关闭钩子

配置输出的地址和输出级别

  1. logging.file=D:/myylog/log.log
  2. logging.level.com.favorites=DEBUG
  3. logging.level.org.springframework.web=INFO
  4. logging.level.org.hibernate=ERROR

配置日志文件, 格式为logging.level.包名=级别:

整合Slf4j+logback

logback和log4j以及log4j2三者,推荐使用logback,因为logback的效率显著高于log4j,而且logback也是Springboot推荐并且默认使用的日志系统。Slf4j的全称是Simple Loging Facade For Java(Java简单日志门面),它仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如JDBC一样,只是一种规则而已。所以单独的Slf4j是不能工作的,必须搭配其他具体的日志实现方案

log level

Slf4j有四个级别的log level可供选择,级别从上到下由低到高,优先级高的将被打印出来。

  • debug:简单来说,对程序调试有利的信息都可以debug输出
  • info:对用户有用的信息
  • warn:可能会导致错误的信息
  • error:顾名思义,发生错误的地方

1、配置依赖

  1. <dependency>
  2. <groupId>org.projectlombok</groupId>
  3. <artifactId>lombok</artifactId>
  4. <optional>true</optional>
  5. </dependency>

RollingFileAppender

随着应用的运行时间越来越长,日志也会增长的越来越多,将他们输出到同一个文件并非一个好办法。RollingFileAppender用于切分文件日志:

  1. <appender name="dailyRollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
  2. <File>/usr/local/log/app.log</File>
  3. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  4. <!-- daily rollover -->
  5. <FileNamePattern>logback.%d{yyyy-MM-dd}.log</FileNamePattern>
  6. <!-- keep 30 days' worth of history -->
  7. <maxHistory>30</maxHistory>
  8. </rollingPolicy>
  9. <encoder>
  10. <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</Pattern>
  11. </encoder>
  12. </appender>

示例:

  1. @Slf4j
  2. @RestController
  3. public class HelloController {
  4. @RequestMapping("/")
  5. public String index() {
  6. log.info("hello Sfl4j + logback......");
  7. return "Hello World";
  8. }
  9. }

参考:

http://blog.csdn.net/catoop/article/details/50501714

https://www.cnblogs.com/gavincoder/p/10090592.html

https://blog.csdn.net/u011271894/article/details/75735915

发表评论

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

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

相关阅读

    相关 Spring Boot日志配置

    pring Boot默认配置只会输出到控制台,并不会记录到位置文件中,但是我们通常生产环境使用时都需要以文件方式记录。 格式化日志输出 一般如果你是使用sprin...

    相关 Spring Boot日志配置

    在今天的数字化时代,日志记录已经成为任何应用程序不可或缺的一部分,它们是我们理解系统行为、诊断问题和监控应用性能的关键。对于使用Spring Boot的开发者来说,有效的日志管

    相关 Spring Boot——日志配置

    日志,通常不会在需求阶段作为一个功能单独提出来,也不会在产品方案中看到它的细节。但是,这丝毫不影响它在任何一个系统中的重要的地位。 为了保证服务的高可用,发现问题一定要即使,

    相关 spring boot 日志配置

            spring boot的web模块已经引入了日志相关的依赖,所以我们只需要在application.properties文件中配置相关信息就可以了,日志及其他常