logback 配置文件解读

浅浅的花香味﹌ 2023-05-22 22:01 290阅读 0赞
  • Grep Console:https://yuanyu.blog.csdn.net/article/details/104656085
  • 混乱的JAVA日志体系:https://yuanyu.blog.csdn.net/article/details/105579356

  • 官网:http://logback.qos.ch/access.html

  • pattern文档:https://logback.qos.ch/manual/layouts.html

1 项目依赖

  1. <!--slf4j 日志门面-->
  2. <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
  3. <dependency>
  4. <groupId>org.slf4j</groupId>
  5. <artifactId>slf4j-api</artifactId>
  6. <version>1.7.30</version>
  7. </dependency>
  8. <!--logback 日志实现-->
  9. <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
  10. <dependency>
  11. <groupId>ch.qos.logback</groupId>
  12. <artifactId>logback-classic</artifactId>
  13. <version>1.2.3</version>
  14. <scope>test</scope>
  15. </dependency>
  16. <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
  17. <dependency>
  18. <groupId>org.projectlombok</groupId>
  19. <artifactId>lombok</artifactId>
  20. <version>1.18.12</version>
  21. <scope>provided</scope>
  22. </dependency>
  23. @Slf4j
  24. public class LogbackTest {
  25. @Test
  26. public void testQuick() {
  27. log.error("error...");
  28. log.warn("wring...");
  29. log.info("info...");
  30. log.debug("debug...");
  31. log.trace("trace...");
  32. }
  33. @Test
  34. public void testSplit() {
  35. for (int i = 0; i < 100000; i++) {
  36. log.error("error");
  37. log.warn("wring");
  38. log.info("info");
  39. log.debug("debug");
  40. log.trace("trace");
  41. }
  42. }

2 输出到控制台

logback.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <!--配置集中管理属性 ${name}-->
  4. <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n"/>
  5. <!--控制台日志输出的 appender-->
  6. <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
  7. <!--控制输出流对象(默认System.out)-->
  8. <target>System.err</target>
  9. <!--日志消息格式配置-->
  10. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  11. <pattern>${pattern}</pattern>
  12. </encoder>
  13. </appender>
  14. <!--root logger 配置-->
  15. <root level="ALL">
  16. <appender-ref ref="console"/>
  17. </root>
  18. </configuration>









































格式  
%-5level 日志级别(5个字符 不足左对齐)
%d{yyyy-MM-dd HH:mm:ss.SSS} 日期
%c 全限定类名
%M method
%L 行号
%thread 线程名称
%m或者%msg 信息
%n 换行

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNzk0OTcz_size_16_color_FFFFFF_t_70


2 输出到文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n"/>
  4. <!--定义日志文件保存路径属性 Windows为当前项目所在的磁盘跟路径-->
  5. <property name="log_dir" value="/logs"/>
  6. <!--日志文件输出的 appender-->
  7. <appender name="file" class="ch.qos.logback.core.FileAppender">
  8. <!--日志文件保存路径-->
  9. <file>${log_dir}/logback.log</file>
  10. <!--日志消息格式配置-->
  11. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  12. <pattern>${pattern}</pattern>
  13. </encoder>
  14. </appender>
  15. <!--root logger 配置-->
  16. <root level="ALL">
  17. <appender-ref ref="file"/>
  18. </root>
  19. </configuration>

20200418135906352.png

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n"/>
  4. <property name="log_dir" value="/logs"/>
  5. <appender name="file" class="ch.qos.logback.core.FileAppender">
  6. <file>${log_dir}/logback.log</file>
  7. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  8. <pattern>${pattern}</pattern>
  9. </encoder>
  10. <!--日志级别过滤器-->
  11. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  12. <!--日志过滤规则-->
  13. <level>WARN</level>
  14. <!--匹配到就放行-->
  15. <onMatch>ACCEPT</onMatch>
  16. <!--没有匹配到就拦截-->
  17. <onMismatch>DENY</onMismatch>
  18. </filter>
  19. </appender>
  20. <root level="ALL">
  21. <appender-ref ref="file"/>
  22. </root>
  23. </configuration>

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNzk0OTcz_size_16_color_FFFFFF_t_70 1


3 输出格式为html

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <!--定义日志文件保存路径属性-->
  4. <property name="log_dir" value="/logs"/>
  5. <!--html 格式日志文件输出 appender-->
  6. <appender name="htmlFile" class="ch.qos.logback.core.FileAppender">
  7. <!--日志文件保存路径-->
  8. <file>${log_dir}/logback.html</file>
  9. <!--html 消息格式配置-->
  10. <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
  11. <layout class="ch.qos.logback.classic.html.HTMLLayout">
  12. <pattern>%-5level%d{yyyy-MM-dd HH:mm:ss.SSS}%c%M%L%thread%m</pattern>
  13. </layout>
  14. </encoder>
  15. </appender>
  16. <!--root logger 配置-->
  17. <root level="ALL">
  18. <appender-ref ref="htmlFile"/>
  19. </root>
  20. </configuration>

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNzk0OTcz_size_16_color_FFFFFF_t_70 2


4 输出日志进行拆分与压缩

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n"/>
  4. <property name="log_dir" value="/logs"/>
  5. <!--日志拆分和归档压缩的 appender 对象-->
  6. <appender name="rollFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
  7. <!--日志文件保存路径-->
  8. <file>${log_dir}/roll_logback.log</file>
  9. <!--日志消息格式配置-->
  10. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  11. <pattern>${pattern}</pattern>
  12. </encoder>
  13. <!--指定拆分规则-->
  14. <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  15. <!--指定时间拆分一次,如果在指定时间内文件超过了设置的大小,也要拆分-->
  16. <!--按照时间和压缩格式声明拆分的文件名 yyyy-MM-dd(一天一拆) yyyy-MM-dd-HH-mm-ss(一秒一拆) -->
  17. <fileNamePattern>${log_dir}/rolling.%d{yyyy-MM-dd}.log%i.gz</fileNamePattern>
  18. <!--按照文件大小拆分-->
  19. <maxFileSize>1MB</maxFileSize>
  20. </rollingPolicy>
  21. </appender>
  22. <root level="ALL">
  23. <appender-ref ref="rollFile"/>
  24. </root>
  25. </configuration>

2020041814105351.png

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNzk0OTcz_size_16_color_FFFFFF_t_70 3


5 异步日志

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n"/>
  4. <property name="log_dir" value="/logs"/>
  5. <appender name="file" class="ch.qos.logback.core.FileAppender">
  6. <file>${log_dir}/logback.log</file>
  7. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  8. <pattern>${pattern}</pattern>
  9. </encoder>
  10. </appender>
  11. <!--异步日志-->
  12. <appender name="async" class="ch.qos.logback.classic.AsyncAppender">
  13. <!--指定某个具体的 appender-->
  14. <appender-ref ref="file"/>
  15. </appender>
  16. <root level="ALL">
  17. <appender-ref ref="file"/>
  18. </root>
  19. </configuration>
  20. //ch.qos.logback.core.AsyncAppenderBase
  21. public class AsyncAppenderBase<E> extends UnsynchronizedAppenderBase<E> implements AppenderAttachable<E> {
  22. AppenderAttachableImpl<E> aai = new AppenderAttachableImpl();
  23. //日志队列
  24. BlockingQueue<E> blockingQueue;
  25. public static final int DEFAULT_QUEUE_SIZE = 256;
  26. int queueSize = 256;
  27. int appenderCount = 0;
  28. static final int UNDEFINED = -1;
  29. int discardingThreshold = -1;
  30. boolean neverBlock = false;

6 自定义looger对象

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n"/>
  4. <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
  5. <target>System.err</target>
  6. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  7. <pattern>${pattern}</pattern>
  8. </encoder>
  9. </appender>
  10. <!--
  11. 自定义 looger 对象
  12. additivity="false" 自定义 logger 对象是否继承 rootLogger
  13. -->
  14. <logger name="com.nobug" level="info" additivity="false">
  15. <appender-ref ref="console"/>
  16. </logger>
  17. <root level="ALL">
  18. <appender-ref ref="console"/>
  19. </root>
  20. </configuration>

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNzk0OTcz_size_16_color_FFFFFF_t_70 4


7 log4j配置文字转换为logback

http://logback.qos.ch/translator/

  1. log4j.rootLogger = debug,stdout
  2. ### 输出信息到控制抬 ###
  3. log4j.appender.stdout = org.apache.log4j.ConsoleAppender
  4. log4j.appender.stdout.Target = System.out
  5. log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
  6. log4j.appender.stdout.layout.ConversionPattern = log4j : [%-5p] %m%n
  7. <?xml version="1.0" encoding="UTF-8"?>
  8. <!-- For assistance related to logback-translator or configuration -->
  9. <!-- files in general, please contact the logback user mailing list -->
  10. <!-- at http://www.qos.ch/mailman/listinfo/logback-user -->
  11. <!-- -->
  12. <!-- For professional support please see -->
  13. <!-- http://www.qos.ch/shop/products/professionalSupport -->
  14. <!-- -->
  15. <configuration>
  16. <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
  17. <Target>System.out</Target>
  18. <encoder>
  19. <pattern>log4j : [%-5p] %m%n</pattern>
  20. </encoder>
  21. </appender>
  22. <root level="debug">
  23. <appender-ref ref="stdout"/>
  24. </root>
  25. </configuration>

发表评论

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

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

相关阅读

    相关 logback配置文件

    -输出到控制台-->--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->--临界值过滤器,过滤掉低于指定临界值的...