三:SpringBoot 的日志介绍及相关配置

版权声明:本文为博主原创文章,如有需要,可自行转载,但必须加上原创作者及原文章链接... https://blog.csdn.net/wzp12321/article/details/86071110

Spring Boot内部采用的是 Commons Logging 进行日志记录,但是也为 Java Util LoggingLogback、Log4J2 等日志框架提供了默认配置 。Java 虽然有很多可用的日志框架,但一般来说,使用SpringBoot默认的 Logback 就完全可以了。

1. 日志格式

大概就是下面这种:

2019-01-08 13:37:20.866  INFO 9092 --- [           main] com.wzp.DemoApplication                  : Starting DemoApplication on Boran-35 with PID 9092 (E:\java\demo\target\classes started by zp.wei in E:\java\demo)
2019-01-08 13:37:20.868  INFO 9092 --- [           main] com.wzp.DemoApplication                  : No active profile set, falling back to default profiles: default
2019-01-08 13:37:22.523  INFO 9092 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2019-01-08 13:37:22.566  INFO 9092 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-01-08 13:37:22.567  INFO 9092 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/9.0.13
2019-01-08 13:37:22.575  INFO 9092 --- [           main] o.a.catalina.core.AprLifecycleListener   : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [D:\Java\jdk1.8.0_172\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;D:\Java\jdk1.8.0_172\bin;D:\gradle-4.8.1\bin;D:\Git\cmd;D:\nodejs\;C:\Users\zp.wei\AppData\Roaming\npm;D:\gradle-4.8.1\bin;.]
2019-01-08 13:37:22.683  INFO 9092 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-01-08 13:37:22.684  INFO 9092 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1755 ms
2019-01-08 13:37:23.008  INFO 9092 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-01-08 13:37:23.282  INFO 9092 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2019-01-08 13:37:23.285  INFO 9092 --- [           main] com.wzp.DemoApplication                  : Started DemoApplication in 2.93 seconds (JVM running for 3.905)
  1. 时间日期:精确到毫秒,可以用于排序(例:2019-01-08 13:37:20.868)
  2. 日志级别:ERROR、WARN、INFO、DEBUG、TRACE(例:INFO)
  3. 进程ID(例:9092)
  4. 分隔符:采用---来标识日志开始部分(例:---
  5. 线程名:方括号括起来(可能会截断控制台输出)(例:[  main])
  6. Logger名:通常使用源代码的类名(例:com.wzp.DemoApplication)
  7. 日志内容:我们输出的消息(例:No active profile set, falling back to default profiles: default)

2. 日志输出

SpringBoot默认为我们输出的日志级别为INFOWARNERRORlogback 没有FATAL级别的日志,它将被映射到ERROR),如需要输出更多日志的时候,可以通过以下方式去开启

  1. 命令模式配置:java -jar app.jar --debug=true, 这种命令会被SpringBoot解析,且优先级最高
  2. 资源文件配置:application.properties 配置 debug=true 即可。该配置只对 嵌入式容器、Spring、Hibernate生效,自己的项目想要输出DEBUG需要额外配置
# 日志输出级别的配置

logging.level.root = WARN
logging.level.org.springframework.web = DEBUG
logging.level.org.hibernate = ERROR

2.1. 日志输出格式配置

logging.pattern.console:定义输出到控制台的格式(不支持JDK Logger)
logging.pattern.file:定义输出到文件的格式(不支持JDK Logger)

 上面的一般写在 application.properties 配置文件里,下面这种一般这种写在 logback.xml 文件中

<!-- 文件输出格式 --> 
<property name="PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n"/> 
<!-- prod文件路径 --> 
<property name="PROD_FILE_PATH" value="/data/wzp/logs"/>

3. 日志文件保存

SpringBoot仅将日志输出到控制台,不会写入到日志文件中去。如果除了控制台输出之外还想写日志文件,则需要在 application.properties 设置 logging.path logging.file 属性

  1. logging.path:将名为 spring.log 写入到指定的文件夹中,如(/date/logs
  2. logging.file:将日志写入到指定的文件中,默认为相对路径,当然了,我们也可以设置成绝对路径

日志文件在达到 xxMB时进行切割,产生一个新的日志文件(如:spring-1.log、spring-2.log ...),新的日志依旧输出到spring.log中去,默认情况下会记录ERRORWARNINFO级别消息。

  1. logging.file.max-size:设置日志文件大小
  2. logging.file.max-history:设置日志保留天数

4. 日志扩展配置

在这里我们用 logback 进行举例,而且该扩展配置仅适用logback-spring.xml 或者设置 logging.config 属性的文件,因为 logback.xml 文件加载过早,它无法获取SpringBoot的扩展属性...

使用 springProfile 或者 springProperty 让你的logback-spring.xml配置更简单和清晰(在这里,我就只写springProfile 这个了,springProperty 也简单,相信你们自己都会的...)

<!-- 开发环境时激活 -->
<springProfile name="dev">
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${PATTERN}</pattern>
        </encoder>
    </appender>

    <logger name="com.roncoo.education" level="debug"/>
    <root level="info">
        <appender-ref ref="CONSOLE"/>
    </root>
</springProfile>

<!-- 测试环境时激活-->
<springProfile name="test">
    
</springProfile>

<!-- 生产环境时激活-->
<springProfile name="prod">
    
</springProfile>

5. 结语

按照惯例写个结语,嗯...看了很多大佬的教程,结合我自己的总结了一波,当然了,不足之处请多包涵,也请多指教...如有雷同,也请多包涵...嘻嘻...

注:如有需要,可自行转载,但是要加上原创作者及原文章链接哦...

猜你喜欢

转载自blog.csdn.net/wzp12321/article/details/86071110
今日推荐