• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

SpringBoot日志框架如何使用

springboot 搞代码 4年前 (2022-01-05) 28次浏览 已收录 0个评论
文章目录[隐藏]

这篇文章主要介绍了SpringBoot日志框架如何使用,帮助大家更好的理解和使用springboot日志框架,感兴趣的朋友可以了解下

不管是开发过程中调试还是线上问题的定位追踪,日志都发挥着及其重要的作用。平时,我们会用System.out.println()打印一些信息到控制台,我们可以使用该语句输出日志,但是System.out会增加资源的消耗,所以最好使用日志框架打印日志信息。

Java中的日志框架有JCL、Jboss-logging、slf4j、logback、log4j、log4j2等等,其中JCL、Jboss-logging、slf4j属于日志门面(日志的抽象),logback、log4j、log4j2是日志框架的具体实现。阿里巴巴开发规范强制要求使用日志的门面而不要直接使用日志系统的API。

【强制】应用中不可直接使用日志系统(Log4j、Logback)中的 API,而应依赖使用日志框架(SLF4J、JCL–Jakarta Commons Logging)中的 API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。

日志门面不是日志解决方案,它只服务于各种各样的日志系统,这就允许最终用户在部署应用时可以随意使用其所希望的日志系统。也就是说如果开始使用slf4j+logback记录日志,则项目会按logback的风格打印日志,后期如果我们想更改为log4j风格的输出,则只需将logback替换为log4j即可,不需改变项目中的任何代码。

slf4j+logback也是SpringBoot中默认整合的日志框架。

如何使用

 public class LoggerService {   private static final Logger logger = LoggerFactory.getLogger(LoggerService.class);   public void printLog() {       logger.trace("trace日志……");       logger.debug("debug日志……");       logger.info("info日志……");       logger.warn("warn日志……");       logger.error("error日志……");   } }

使用LoggerFactory生成Logger对象,然后调用Logger对象的相应日志级别的方法打印即可。另外,在输出日志时,字符串的拼接要使用占位符替换不要使用append等方法。

【强制】在日志输出时,字符串变量之间的拼接使用占位符的方式。说明:因为 String 字符串的拼接会使用 StringBuilder 的 append()方式,有一定的性能损耗。使用占位符仅是替换动作,可以有效提升性能。正例:logger.debug(“Processing trade with id: {} and symbol: {}”, id, symbol);

上述代码的运行

 2020-12-28 13:32:40.751 INFO 16016 --- [nio-8080-exec-2] c.c.e.e.service.LoggerService           : info日志…… 2020-12-28 13:32:40.751 WARN 16016 --- [nio-<p style="color:transparent">来源gao!%daima.com搞$代*!码$网</p>8080-exec-2] c.c.e.e.service.LoggerService           : warn日志…… 2020-12-28 13:32:40.751 ERROR 16016 --- [nio-8080-exec-2] c.c.e.e.service.LoggerService           : error日志……

<debug < info warn error)是info。

指定配置

SpringBoot日志的默认配置在org\springframework\boot\spring-boot\2.4.1\spring-boot-2.4.1.jar!\org\springframework\boot\logging\logback\defaults.xml文件中,内容如下:

  <!-- Default logback configuration provided for import -->                                             

里面定义了默认的日志输出格式, org\springframework\boot\spring-boot\2.4.1\spring-boot-2.4.1.jar!\org\springframework\boot\logging\logback\base.xml 文件中定义了日志默认级别。如果想要使用自定义的配置,在类路径下放上日志框架自己对应的配置文件即可,如logback对应logback-spring.xml或logback.xml,log4j2对应log4j2-spring.xml或log4j2.xml,这样Springboot便不在使用默认配置。

SpringBoot 官方建议在日志配置中使用 -spring 的配置方式(例如,使用 logback-spring.xml 而不是 logback.xml)。如果使用标准配置位置,Spring 无法完全控制日志初始化。

另外官方文档中有明确提到,JUL(ava Util Logging) 在 FATJAR 场景下存在一些已知的类加载问题,所以要尽量避免在 FATJAR 场景下使用 JUL。

使用这种命名方式日志框架就不会直接加载日志的配置,而改由SpringBoot加载,同时使用SpringBoot的高级Profile功能指定某段配置只在某个环境下生效。

  <!-- 激活dev下的配置 --> <!-- 激活非production下的配置 -->

示例

   <!-- 该输出格式只在dev下生效 --> %d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level    %logger{50} - %msg%n

logback配置详解

logback完整配置如下

     <!-- 日志文件的地址,windows和Linux下都要写绝对地址 --><!-- 日志输出格式:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%msg:日志消息,%n是换行符 --><!--控制台输出 -->        <!-- 输出格式,直接引用上面定义的property -->     ${LOG_PATTERN}     <!--文件输出, 每天生成日志文件 -->        <!--日志文件名-->     ${LOG_HOME}/XXX.log.%d{yyyy-MM-dd}.log     <!--日志文件保留天数,15天是阿里巴巴开发规范中的最低要求-->     15           <!--输出格式,同上-->     %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n      <!--日志文件最大的大小-->      10MB   <!-- myibatis日志配置 --><!-- 日志输出级别 -->      

更换日志框架

SpringBoot中的日志实现默认是logback,假如我们要更换其他日志实现,假如要更换为Log4j2,该怎么做呢?

          org.springframework.boot         spring-boot-starter-web                 <!-- 移除原实现 -->                    org.springframework.boot          spring-boot-starter-logging                            <!-- 引入新实现 -->         org.springframework.boot         spring-boot-starter-log4j2

总结一下就是分为两步:

移除原日志的实现,根据新使用的日志实现不同需移除的项目也有所不同,如要使用log4j则需移除以下依赖。

      org.springframework.boot     spring-boot-starter-web                       logback-classic          ch.qos.logback                          log4j-over-slf4j          org.slf4j             

引入新实现的依赖。

log4j需引入,这是一个适配层的包,其自动依赖了log4j。

      org.slf4j     slf4j-log4j12

log4j2需引入。

          org.springframework.boot         spring-boot-starter-log4j2

以上就是SpringBoot日志框架如何使用的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:SpringBoot日志框架如何使用

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址