logback.xml 配置总结

前端之家收集整理的这篇文章主要介绍了logback.xml 配置总结前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

以下是我们在日常开发中使用的logback.xml文件配置,整理出来分享给大家。

输出日志到控制台

以下配置将使所有的项目日志输出到控制台:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3.  
  4. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  5. <layout class="ch.qos.logback.classic.PatternLayout">
  6. <Pattern>
  7. %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
  8. </Pattern>
  9. </layout>
  10. </appender>
  11.  
  12. <logger name="com.mkyong.web" level="debug"
  13. additivity="false">
  14. <appender-ref ref="STDOUT" />
  15. </logger>
  16.  
  17. <root level="error">
  18. <appender-ref ref="STDOUT" />
  19. </root>
  20.  
  21. </configuration>

输出日志到文件

以下配置会将日志输出到c:/logs/debug.log文件里,此外,日志文件每天或大于10M时会被存档:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3.  
  4. <property name="DEV_HOME" value="c:/logs" />
  5.  
  6. <appender name="FILE-AUDIT"
  7. class="ch.qos.logback.core.rolling.RollingFileAppender">
  8. <file>${DEV_HOME}/debug.log</file>
  9. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  10. <Pattern>
  11. %d{yyyy-MM-dd HH:mm:ss} - %msg%n
  12. </Pattern>
  13. </encoder>
  14.  
  15. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  16. <!-- rollover daily -->
  17. <fileNamePattern>${DEV_HOME}/archived/debug.%d{yyyy-MM-dd}.%i.log
  18. </fileNamePattern>
  19. <timeBasedFileNamingAndTriggeringPolicy
  20. class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  21. <maxFileSize>10MB</maxFileSize>
  22. </timeBasedFileNamingAndTriggeringPolicy>
  23. </rollingPolicy>
  24.  
  25. </appender>
  26.  
  27. <logger name="com.mkyong.web" level="debug"
  28. additivity="false">
  29. <appender-ref ref="FILE-AUDIT" />
  30. </logger>
  31.  
  32. <root level="error">
  33. <appender-ref ref="FILE-AUDIT" />
  34. </root>
  35.  
  36. </configuration>

输出日志到控制台和文件

以下示例会将日志信息输出到控制台和文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3.  
  4. <property name="DEV_HOME" value="c:/logs" />
  5.  
  6. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  7. <layout class="ch.qos.logback.classic.PatternLayout">
  8. <Pattern>
  9. %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
  10. </Pattern>
  11. </layout>
  12. </appender>
  13.  
  14. <appender name="FILE-AUDIT"
  15. class="ch.qos.logback.core.rolling.RollingFileAppender">
  16. <file>${DEV_HOME}/debug.log</file>
  17. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  18. <Pattern>
  19. %d{yyyy-MM-dd HH:mm:ss} - %msg%n
  20. </Pattern>
  21. </encoder>
  22.  
  23. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  24. <!-- rollover daily -->
  25. <fileNamePattern>${DEV_HOME}/archived/debug.%d{yyyy-MM-dd}.%i.log
  26. </fileNamePattern>
  27. <timeBasedFileNamingAndTriggeringPolicy
  28. class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  29. <maxFileSize>10MB</maxFileSize>
  30. </timeBasedFileNamingAndTriggeringPolicy>
  31. </rollingPolicy>
  32.  
  33. </appender>
  34.  
  35. <appender name="FILE-ERROR"
  36. class="ch.qos.logback.core.rolling.RollingFileAppender">
  37. <file>${DEV_HOME}/error.log</file>
  38. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  39. <Pattern>
  40. %d{yyyy-MM-dd HH:mm:ss} - %msg%n
  41. </Pattern>
  42. </encoder>
  43.  
  44. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  45. <!-- rollover daily -->
  46. <fileNamePattern>${DEV_HOME}/archived/error.%d{yyyy-MM-dd}.%i.log
  47. </fileNamePattern>
  48. <timeBasedFileNamingAndTriggeringPolicy
  49. class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  50. <maxFileSize>10MB</maxFileSize>
  51. </timeBasedFileNamingAndTriggeringPolicy>
  52. </rollingPolicy>
  53.  
  54. </appender>
  55.  
  56. <!-- Send logs to both console and file audit -->
  57. <logger name="com.mkyong.web" level="debug"
  58. additivity="false">
  59. <appender-ref ref="FILE-AUDIT" />
  60. <appender-ref ref="STDOUT" />
  61. </logger>
  62.  
  63. <root level="error">
  64. <appender-ref ref="FILE-ERROR" />
  65. </root>
  66.  
  67. </configuration>

参考资料:http://logback.qos.ch/manual/appenders.html

SiftingAppender示例

以下配置会将日志输出到分散的文件里,文件名称在运行时通过MDC方式生成

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3.  
  4. <property name="DEV_HOME" value="c:/logs" />
  5.  
  6. <appender name="FILE-THREAD" class="ch.qos.logback.classic.sift.SiftingAppender">
  7.  
  8. <discriminator>
  9. <key>logFileName</key>
  10. <defaultValue>head0</defaultValue>
  11. </discriminator>
  12.  
  13. <sift>
  14.  
  15. <appender name="FILE-${logFileName}"
  16. class="ch.qos.logback.core.rolling.RollingFileAppender">
  17. <file>${DEV_HOME}/${logFileName}.log</file>
  18.  
  19. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  20. <Pattern>
  21. %d{yyyy-MM-dd HH:mm:ss} [%thread] %level %logger{35} - %msg%n
  22. </Pattern>
  23. </encoder>
  24.  
  25. <rollingPolicy
  26. class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
  27. <FileNamePattern>${DEV_HOME}/${logFileName}.%i.log.zip
  28. </FileNamePattern>
  29. <MinIndex>1</MinIndex>
  30. <MaxIndex>10</MaxIndex>
  31. </rollingPolicy>
  32.  
  33. <triggeringPolicy
  34. class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
  35. <MaxFileSize>10MB</MaxFileSize>
  36. </triggeringPolicy>
  37.  
  38. </appender>
  39.  
  40. </sift>
  41. </appender>
  42.  
  43. <logger name="com.mkyong.web" level="debug"
  44. additivity="false">
  45. <appender-ref ref="FILE-THREAD" />
  46. </logger>
  47.  
  48. <root level="error">
  49. <appender-ref ref="FILE-THREAD" />
  50. </root>
  51.  
  52. </configuration>
  1. import org.slf4j.Logger;
  2. import org.slf4j.LoggerFactory;
  3. import org.slf4j.MDC;
  4.  
  5. //...
  6. public void run() {
  7.  
  8. MDC.put('logFileName',"head1");
  9.  
  10. logger.debug("hello");
  11.  
  12. MDC.remove('logFileName');
  13.  
  14. }

参考资料:Logback SiftingAppender 示例

编程设置文件名称

可以通过System.setProperty方法设置log.name属性,来编程设置文件名称代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3.  
  4. <property name="USER_HOME" value="/home/mkyong/ant/logs" />
  5.  
  6. <appender name="FILE-ENGINE-ERROR" class="ch.qos.logback.core.FileAppender">
  7. <file>${USER_HOME}/${log.name}.error</file>
  8. <encoder>
  9. <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
  10. </encoder>
  11. </appender>
  12.  
  13. <appender name="FILE-ENGINE" class="ch.qos.logback.core.FileAppender">
  14. <file>${USER_HOME}/${log.name}.log</file>
  15. <encoder>
  16. <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{35} - %msg%n</pattern>
  17. </encoder>
  18. </appender>
  19.  
  20. <logger name="com.mkyong.core" level="debug" additivity="false">
  21. <appender-ref ref="FILE-ENGINE" />
  22. </logger>
  23.  
  24. <root level="error">
  25. <appender-ref ref="FILE-ENGINE-ERROR" />
  26. </root>
  27.  
  28. </configuration>

TestRunApp.java:

  1. package com.mkyong.core;
  2.  
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5.  
  6. public class TestRunApp {
  7.  
  8. //No static,else log.name.IS_UNDEFINED.log
  9. private final Logger logger = LoggerFactory.getLogger(TestRunApp.class);
  10.  
  11. public static void main(String[] args) {
  12.  
  13. //Set this before the logger start.
  14. System.setProperty("log.name","abcdefg");
  15.  
  16. TestRunApp obj = new TestRunApp();
  17. obj.start();
  18.  
  19. }
  20.  
  21. private void start() {
  22.  
  23. logger.debug("------ Starting Ant------");
  24. //...
  25. }
  26. }

结果如下:

  1. Debug log file path
  2. /home/mkyong/ant/logs/abcdefg.log
  3.  
  4. Error log file path
  5. /home/mkyong/ant/logs/abcdefg.error

参考链接Logback – 以编程方式设置文件名称

结语

Mkyong.com是一个不错的网站,我关注它几年了,作者是一个开发者,该网站主要面向Java开发者,所有示例简单易懂,并且很容易在开发环境测试。

编译自:logback.xml Example

猜你在找的XML相关文章