Logback的简单使用

痛定思痛。 2021-12-01 16:20 252阅读 0赞

1、前言


#

查了很多资料,都说logback的性能都要比log4j的性能要好,logback逐渐要取代log4j。今天对logback作一个简单的整理。

2、loback的坐标依赖

  1. <!--
  2. <dependency>
  3. <groupId>org.slf4j</groupId>
  4. <artifactId>slf4j-api</artifactId>
  5. <version>1.6.4</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>ch.qos.logback</groupId>
  9. <artifactId>logback-core</artifactId>
  10. <version>1.0.6</version>
  11. </dependency>
  12. -->
  13. <!-- 该依赖包括了上面两个依赖,所以只要引入该依赖即可 -->
  14. <dependency>
  15. <groupId>ch.qos.logback</groupId>
  16. <artifactId>logback-classic</artifactId>
  17. <version>1.0.6</version>
  18. </dependency>

3、配置文件:logback.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration
  3. xmlns="http://ch.qos.logback/xml/ns/logback"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://ch.qos.logback/xml/ns/logback https://raw.githubusercontent.com/enricopulatzo/logback-XSD/master/src/main/xsd/logback.xsd">
  6. <property name="LOG_HOME" value="tp/log"/>
  7. <!-- 输出到控制台 -->
  8. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender" >
  9. <!-- 输出的格式 -->
  10. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  11. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}: %msg%n</pattern>
  12. </encoder>
  13. </appender>
  14. <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  15. <!-- 配置滚动的策略 -->
  16. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  17. <!-- 日志名称的格式 -->
  18. <fileNamePattern>${LOG_HOME}/logback.log.%d{yyyy-MM-dd}</fileNamePattern>
  19. <!-- 保存的最长时间:天数 -->
  20. <MaxHistory>1</MaxHistory>
  21. </rollingPolicy>
  22. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  23. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}: %msg%n</pattern>
  24. </encoder>
  25. </appender>
  26. <!--
  27. 注意:
  28. level属性也可以直接写在logger上,如:
  29. <logger name="ws.log.logback.LogbackTest" additivity="false" level="INFO">
  30. <appender-ref ref="STDOUT" />
  31. </logger>
  32. -->
  33. <logger name="ws.log.logback.LogbackTest" additivity="false">
  34. <level value="INFO" />
  35. <appender-ref ref="STDOUT" />
  36. </logger>
  37. <!-- 相当于logger元素,只是name值已经确定为root了 -->
  38. <root level="warn">
  39. <appender-ref ref="STDOUT" />
  40. </root>
  41. </configuration>

4、代码实例:

  1. //注意导入的包都是slf4j的包
  2. import org.slf4j.Logger;
  3. import org.slf4j.LoggerFactory;
  4. public class LogbackTest {
  5. private static final Logger LOGGER = LoggerFactory.getLogger(LogbackTest.class);
  6. public static void main(String[] args) {
  7. LOGGER.trace("logback的--trace日志--输出了");
  8. LOGGER.debug("logback的--debug日志--输出了");
  9. LOGGER.info("logback的--info日志--输出了");
  10. LOGGER.warn("logback的--warn日志--输出了");
  11. LOGGER.error("logback的--error日志--输出了");
  12. }
  13. }

5、效果展示

1531673-20190702174859192-855402969.png

按照logger指定的输出级别输出,会覆盖root指定的级别。

6、注意:

loger和logger的问题,通过查询文档。才了解logback中是没有loger元素的。我被技术博客误导了。其实在测试时候已经出现错误日志了,如最后一张图紫红区域,是当时疏忽了。笔者已经更改。为了方便可以在xml中配置名称空间,就会有相应的提示,就不会这样的错误。如果不配置,会提示用过的标签,不管对错都会提示。这样会产生误区。名称空间可以参考该博客的logback.xml配置。

1531673-20190702175225432-262808083.png


参考资料:

技术博客:http://www.cnblogs.com/warking/p/5710303.html 【该技术博客中的loger就是指logger】
官网:https://logback.qos.ch/manual/configuration.html
译文:https://www.oschina.net/translate/logging-in-java-switching-to-logback

转载于:https://www.cnblogs.com/AlanWilliamWalker/p/11122218.html

发表评论

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

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

相关阅读