Spring Boot 日志配置详解,还有谁不会?!(spring boot 日志管理)

  本篇文章为你整理了Spring Boot 日志配置详解,还有谁不会?!(spring boot 日志管理)的详细内容,包含有springboot日志文件配置 spring boot 日志管理 springboot日志配置slf4j springboot日志yml Spring Boot 日志配置详解,还有谁不会?!,希望能帮助你了解 Spring Boot 日志配置详解,还有谁不会?!。

  分享Java技术,高并发编程,分布式技术,架构设计,Java面试题,算法,行业动态,程序人生等。

  
springboot默认日志是打印再console中的,不会保存在文件中。我们项目上线肯定要保存日志用于分析的。

  一、使用xml配置日志保存(并不需要pom配置slf4j依赖,starter里面已经配置了依赖了)

  1、在项目的resources目录下创建一个【logback-spring.xml】日志配置文件

  名称只要是一 logback开头就行,测试使用log.xml并不会生成日志。合法名称:logback.xml 、logback-spring.xml

  备注:要配置logback-spring.xml,springboot会默认加载此文件,为什么不配置logback.xml,因为logback.xml会先application.properties加载,而logback-spring.xml会后于application.properties加载,这样我们在application.properties文中设置日志文件名称和文件路径才能生效。

  Spring Boot 基础就不介绍了,推荐看这个免费教程:

  https://github.com/javastacks/spring-boot-best-practice

  2、编写xml文件内容:

  

 ?xml version="1.0" encoding="UTF-8"? 

 

   configuration scan="true" scanPeriod="60 seconds" debug="false"

   contextName logback /contextName

   !--输出到控制台--

   appender name="console"

   encoder

   !-- pattern %d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n /pattern --

   pattern %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n /pattern

   !-- pattern %d{yyyy-MM-dd HH:mm:ss.SSS} -%5p ${PID:-} [%15.15t] %-30.30C{1.} : %m%n /pattern --

   /encoder

   /appender

   !--按天生成日志--

   appender name="logFile"

   Prudent true /Prudent

   rollingPolicy

   FileNamePattern

   poslog/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.log

   /FileNamePattern

   maxHistory 7 /maxHistory

   /rollingPolicy

   layout

   Pattern

   %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n

   /Pattern

   /layout

   /appender

   root level="INFO"

   appender-ref ref="console" /

   appender-ref ref="logFile" /

   /root

   /configuration

  

 

  上述配置的编码中,对应符号的含义如下

  %d{HH:mm:ss.SSS}——日志输出时间

  %thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用

  %-5level——日志级别,并且使用5个字符靠左对齐

  %logger ——日志输出者的名字

  %msg——日志消息

  %n——平台的换行符

  3、编写打印日志

  

 private Logger logger = LoggerFactory.getLogger(TestController.class);

 

   logger.info("name = " + name + " views = " + views);// 使用

  

 

  4、启动测试

  在当前文件夹下会创建一个【poslog/2020-10/22】的文件夹,里面会按天生成日志:【2020-10-22.log】,例如:

  

2020-10-22 16:38 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8088 (http)

 

  2020-10-22 16:38 [main] INFO org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8088"]

  2020-10-22 16:38 [main] INFO org.apache.catalina.core.StandardService - Starting service [Tomcat]

  2020-10-22 16:38 [main] INFO org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.38]

  2020-10-22 16:38 [main] INFO org.apache.catalina.core.AprLifecycleListener - Loaded Apache Tomcat Native library [1.2.23] using APR version [1.7.0].

  2020-10-22 16:38 [main] INFO org.apache.catalina.core.AprLifecycleListener - APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].

  2020-10-22 16:38 [main] INFO org.apache.catalina.core.AprLifecycleListener - APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]

  2020-10-22 16:38 [main] INFO org.apache.catalina.core.AprLifecycleListener - OpenSSL successfully initialized [OpenSSL 1.1.1c 28 May 2019]

  2020-10-22 16:38 [main] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext

  2020-10-22 16:38 [main] INFO org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1422 ms

  2020-10-22 16:38 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService applicationTaskExecutor

  2020-10-22 16:38 [main] INFO org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8088"]

  2020-10-22 16:38 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8088 (http) with context path

  2020-10-22 16:38 [main] INFO com.example.demo.DockerComposeTestApplication - Started DockerComposeTestApplication in 2.841 seconds (JVM running for 3.257)

  

 

  备注:发现使用这个默认不用配置pom依赖,最新的spring-boot-starter-web中已经集成了。

  总结:启动一个项目,直接将logback-spring.xml文件复制到resources目录下就可以实现日志文件记录。非常方便。

  二、进阶配置:

  Spring Boot 基础就不介绍了,推荐看这个免费教程:

  https://github.com/javastacks/spring-boot-best-practice

  分类logback.xml配置:

  日志配置到d盘了

  

 ?xml version="1.0" encoding="UTF-8"? 

 

   configuration

   !-- 日志存放路径 --

   property name="log.path" value="d:/logback" /

   !-- 日志输出格式 --

   property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /

   !-- 控制台输出 --

   appender name="console"

   encoder

   pattern ${log.pattern} /pattern

   /encoder

   /appender

   !-- 系统日志输出 --

   appender name="file_info"

   file ${log.path}/sys-info.log /file

   !-- 循环政策:基于时间创建日志文件 --

   rollingPolicy

   !-- 日志文件名格式 --

   fileNamePattern ${log.path}/sys-info.%d{yyyy-MM-dd}.log /fileNamePattern

   !-- 日志最大的历史 60天 --

   maxHistory 60 /maxHistory

   /rollingPolicy

   encoder

   pattern ${log.pattern} /pattern

   /encoder

   filter

   !-- 过滤的级别 只会打印debug不会有info日志--

   !-- level DEBUG /level --

   !-- 匹配时的操作:接收(记录) --

   onMatch ACCEPT /onMatch

   !-- 不匹配时的操作:拒绝(不记录) --

   onMismatch DENY /onMismatch

   /filter

   /appender

   appender name="file_error"

   file ${log.path}/sys-error.log /file

   !-- 循环政策:基于时间创建日志文件 --

   rollingPolicy

   !-- 日志文件名格式 --

   fileNamePattern ${log.path}/sys-error.%d{yyyy-MM-dd}.log /fileNamePattern

   !-- 日志最大的历史 60天 --

   maxHistory 60 /maxHistory

   /rollingPolicy

   encoder

   pattern ${log.pattern} /pattern

   /encoder

   filter

   !-- 过滤的级别 --

   level ERROR /level

   !-- 匹配时的操作:接收(记录) --

   onMatch ACCEPT /onMatch

   !-- 不匹配时的操作:拒绝(不记录) --

   onMismatch DENY /onMismatch

   /filter

   /appender

   !-- 用户访问日志输出 --

   appender name="sys-user"

   file ${log.path}/sys-user.log /file

   rollingPolicy

   !-- 按天回滚 daily --

   fileNamePattern ${log.path}/sys-user.%d{yyyy-MM-dd}.log /fileNamePattern

   !-- 日志最大的历史 60天 --

   maxHistory 60 /maxHistory

   /rollingPolicy

   encoder

   pattern ${log.pattern} /pattern

   /encoder

   /appender

   !-- 系统模块日志级别控制 --

   logger name="com.example" level="debug" /

   !-- Spring日志级别控制 --

   logger name="org.springframework" level="warn" /

   root level="info"

   appender-ref ref="console" /

   /root

   !--系统操作日志--

   root level="info"

   appender-ref ref="file_info" /

   appender-ref ref="file_error" /

   /root

   !--系统用户操作日志--

   logger name="sys-user" level="info"

   appender-ref ref="sys-user"/

   /logger

   /configuration

  

 

  还可以在application.yml中配置

  

# 日志配置

 

  logging:

   level:

   com.example: info

   org.springframework: warn

  

 

  配置info就只有info以上日志才会输出

  如果配置 com.example: debug ,那么我们项目com.example包里面debug以上的日志也会输出。

  来源:blog.csdn.net/gaopinqiang/article/details/109228641

  近期热文推荐:

  1.1,000+ 道 Java面试题及答案整理(2022最新版)

  2.劲爆!Java 协程要来了。。。

  3.Spring Boot 2.x 教程,太全了!

  4.别再写满屏的爆爆爆炸类了,试试装饰器模式,这才是优雅的方式!!

  5.《Java开发手册(嵩山版)》最新发布,速速下载!

  觉得不错,别忘了随手点赞+转发哦!

  以上就是Spring Boot 日志配置详解,还有谁不会?!(spring boot 日志管理)的详细内容,想要了解更多 Spring Boot 日志配置详解,还有谁不会?!的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: