打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Spring Boot 日志配置详解,还有谁不会?!
userphoto

2022.10.03 江苏

关注

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

上一篇干货:SpringBoot 设置定时任务,求求你别再写死了~,太low了!动态定时任务真的太爽了!

springboot日志配置:

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' class='ch.qos.logback.core.ConsoleAppender'>
  <encoder>
   
   <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>

  </encoder>
 </appender>

 
 <appender name='logFile'  class='ch.qos.logback.core.rolling.RollingFileAppender'>
    <Prudent>true</Prudent> 
    <rollingPolicy class='ch.qos.logback.core.rolling.TimeBasedRollingPolicy'>
      <FileNamePattern>
     poslog/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.log
      </FileNamePattern>
      <maxHistory>7</maxHistory> 
    </rollingPolicy>
    <layout class='ch.qos.logback.classic.PatternLayout'>
      <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>

上述配置的编码中,对应符号的含义如下、另外,最新 Spring Boot 面试题整理好了,点击Java面试库小程序在线刷题。

  • %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中已经集成了。另外,最新 Spring Boot 面试题整理好了,点击Java面试库小程序在线刷题。

总结:启动一个项目,直接将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' class='ch.qos.logback.core.ConsoleAppender'>
  <encoder>
   <pattern>${log.pattern}</pattern>
  </encoder>
 </appender>
 
 
 <appender name='file_info' class='ch.qos.logback.core.rolling.RollingFileAppender'>
  <file>${log.path}/sys-info.log</file>
  
  <rollingPolicy class='ch.qos.logback.core.rolling.TimeBasedRollingPolicy'>
   
   <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
   
   <maxHistory>60</maxHistory>
  </rollingPolicy>
  <encoder>
   <pattern>${log.pattern}</pattern>
  </encoder>
  <filter class='ch.qos.logback.classic.filter.LevelFilter'>
   

   
   <onMatch>ACCEPT</onMatch>
   
   <onMismatch>DENY</onMismatch>
  </filter>
 </appender>
 
 <appender name='file_error' class='ch.qos.logback.core.rolling.RollingFileAppender'>
  <file>${log.path}/sys-error.log</file>
  
  <rollingPolicy class='ch.qos.logback.core.rolling.TimeBasedRollingPolicy'>
   
   <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
   
   <maxHistory>60</maxHistory>
  </rollingPolicy>
  <encoder>
   <pattern>${log.pattern}</pattern>
  </encoder>
  <filter class='ch.qos.logback.classic.filter.LevelFilter'>
   
   <level>ERROR</level>
   
   <onMatch>ACCEPT</onMatch>
   
   <onMismatch>DENY</onMismatch>
  </filter>
 </appender>
 
 
 <appender name='sys-user' class='ch.qos.logback.core.rolling.RollingFileAppender'>
  <file>${log.path}/sys-user.log</file>
  <rollingPolicy class='ch.qos.logback.core.rolling.TimeBasedRollingPolicy'>
   
   <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
   
   <maxHistory>60</maxHistory>
  </rollingPolicy>
  <encoder>
   <pattern>${log.pattern}</pattern>
  </encoder>
 </appender>
 
 
 <logger name='com.example' level='debug' />
 
 <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以上的日志也会输出。

来个“分享、点赞、在看”👇
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
logback 配置
spring boot使用logback实现多环境日志配置
给java项目配置日志文件1
LogBack简易教程
flowable 控制台打印出自带表的 sql 语句
老板下了死命令,要把日志系统切换到Logback
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服