logback介绍

Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能

想要学习logback,可以参照Logback用户手册中文版.pdf。

logback使用

  • 先新建一个maven工程

  

  • logback需要引入的jar包(slf4j-api-x.x.x.jar,logback-core-x.x.x.jar,logback-classic-1.0.0.jar,logback-access-x.x.x.jar),maven的依赖关系如下:
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.test</groupId>
  5. <artifactId>test-logback</artifactId>
  6. <packaging>war</packaging>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <name>test Maven Webapp</name>
  9. <url>http://maven.apache.org</url>
  10. <dependencies>
  11. <dependency>
  12. <groupId>org.slf4j</groupId>
  13. <artifactId>slf4j-api</artifactId>
  14. <version>1.7.5</version>
  15. <type>jar</type>
  16. <scope>compile</scope>
  17. </dependency>
  18.  
  19. <dependency>
  20. <groupId>ch.qos.logback</groupId>
  21. <artifactId>logback-core</artifactId>
  22. <version>0.9.30</version>
  23. <type>jar</type>
  24. </dependency>
  25.  
  26. <dependency>
  27. <groupId>ch.qos.logback</groupId>
  28. <artifactId>logback-classic</artifactId>
  29. <version>0.9.30</version>
  30. <type>jar</type>
  31. </dependency>
  32.  
  33. <dependency>
  34. <groupId>ch.qos.logback</groupId>
  35. <artifactId>logback-access</artifactId>
  36. <version>0.9.30</version>
  37. </dependency>
  38.  
  39. <dependency>
  40. <groupId>junit</groupId>
  41. <artifactId>junit</artifactId>
  42. <version>3.8.1</version>
  43. <scope>test</scope>
  44. </dependency>
  45. </dependencies>
  46. <build>
  47. <finalName>test</finalName>
  48. </build>
  49. </project>

pom.xml

  • 测试类
  1. package com.test;
  2.  
  3. import java.util.Date;
  4.  
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7.  
  8. public class Test {
  9.  
  10. final static Logger logger = LoggerFactory.getLogger(Test.class );
  11.  
  12. public static void main(String[] args) throws InterruptedException {
  13.  
  14. logger.debug( "现在的时间是 {}" , new Date().toString());
  15.  
  16. logger.info( " This time is {}" , new Date().toString());
  17.  
  18. logger.warn( " This time is {}" , new Date().toString());
  19.  
  20. logger.error( " This time is {}" , new Date().toString());
  21.  
  22. }
  23.  
  24. }

Test.java

  • Logback 可以通过编程式配置,或用 XML 格式的配置文件进行配置。
    Logback 采取下面的步骤进行自我配置:
    1. 尝试在 classpath 下查找文件 logback-test.xml;
    2. 如果文件不存在,则查找文件 logback.xml;
    3. 如果两个文件都不存在,logback 用 BasicConfigurator 自动对自己进行配置,这会 导致记录输出到控制台。

  如果是maven工程直接把logback.xml放在src/main/resources里面即可。

  

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2.  
  3. <!-- scan="true" 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 -->
  4. <!-- scanPeriod="30 seconds" 设置每30秒自动扫描,若没有指定具体单位则以milliseconds为标准(单位:milliseconds, seconds, minutes or hours) -->
  5. <!-- debug="false"当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。-->
  6. <configuration scan="true" scanPeriod="30 seconds">
  7. <!-- 上下文名称 -->
  8. <contextName>test</contextName>
  9.  
  10. <!-- 存放日志文件路径 -->
  11. <property name="Log_Home" value="D:/logs/test" />
  12.  
  13. <!-- INFO级别 -->
  14. <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
  15.  
  16. <!-- 级别过滤器 -->
  17. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  18. <!-- 设置过滤级别 -->
  19. <level>INFO</level>
  20. <!-- 用于配置符合过滤条件的操作 -->
  21. <onMatch>ACCEPT</onMatch>
  22. <!-- 用于配置不符合过滤条件的操作 -->
  23. <onMismatch>DENY</onMismatch>
  24. </filter>
  25. <Encoding>UTF-8</Encoding>
  26. <File>${Log_Home}/info/info.log</File>
  27. <!-- 根据时间来制定滚动策略 -->
  28. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  29. <FileNamePattern>
  30. ${Log_Home}/info/info.%d{yyyy-MM-dd}.%i.log
  31. </FileNamePattern>
  32. <!-- 多久后自动清楚旧的日志文件,单位:月 -->
  33. <MaxHistory>1</MaxHistory>
  34. <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  35. <!-- 默认值是 10MB,文档最大值 -->
  36. <MaxFileSize>2MB</MaxFileSize>
  37. </TimeBasedFileNamingAndTriggeringPolicy>
  38. </rollingPolicy>
  39.  
  40. <encoder>
  41. <Pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</Pattern>
  42. </encoder>
  43. </appender>
  44.  
  45. <!-- ch.qos.logback.core.ConsoleAppender 控制台输出 -->
  46. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  47. <encoder>
  48. <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
  49. <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern>
  50. </encoder>
  51. </appender>
  52.  
  53. <!-- 控制java下面包的打印,没设置等级,将继承上级root的等级 -->
  54. <logger name="com.test"/>
  55.  
  56. <!-- 当前日志总级别为TRACE、DEBUG、INFO、 WARN、ERROR、ALL和 OF -->
  57. <!-- the level of the root level is set to DEBUG by default. -->
  58. <root level="DEBUG">
  59. <appender-ref ref="STDOUT" />
  60. <appender-ref ref="FILE_INFO" />
  61. </root>
  62. </configuration>

logback.xml

  • 运行测试类Test.java的main方法,控制台输出如下
  1. 20:35:23,708 |-INFO in ch.qos.logback.classic.LoggerContext[test] - Could NOT find resource [logback.groovy]
  2. 20:35:23,709 |-INFO in ch.qos.logback.classic.LoggerContext[test] - Could NOT find resource [logback-test.xml]
  3. 20:35:23,709 |-INFO in ch.qos.logback.classic.LoggerContext[test] - Found resource [logback.xml] at [file:/D:/workspace/test-logback/target/classes/logback.xml]
  4. 20:35:23,751 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
  5. 20:35:23,753 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeFilter scanning period to 30 seconds
  6. 20:35:23,753 |-INFO in ReconfigureOnChangeFilter{invocationCounter=0} - Will scan for changes in [[D:\workspace\test-logback\target\classes\logback.xml]] every 30 seconds.
  7. 20:35:23,753 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Adding ReconfigureOnChangeFilter as a turbo filter
  8. 20:35:23,759 |-INFO in ch.qos.logback.classic.joran.action.ContextNameAction - Setting logger context name as [test]
  9. 20:35:23,760 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
  10. 20:35:23,763 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [FILE_INFO]
  11. 20:35:23,783 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@25:13 - no applicable action for [Encoding], current pattern is [[configuration][appender][Encoding]]
  12. 20:35:23,819 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - No compression will be used
  13. 20:35:23,820 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use the pattern D:/logs/test/info/info.%d{yyyy-MM-dd}.%i.log for the active file
  14. 20:35:23,822 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@5599682f - The date pattern is 'yyyy-MM-dd' from file name pattern 'D:/logs/test/info/info.%d{yyyy-MM-dd}.%i.log'.
  15. 20:35:23,822 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@5599682f - Roll-over at midnight.
  16. 20:35:23,824 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@5599682f - Setting initial period to Wed Jul 13 20:05:58 CST 2016
  17. 20:35:23,825 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
  18. 20:35:23,837 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE_INFO] - Active log file name: D:/logs/test/info/info.log
  19. 20:35:23,837 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE_INFO] - File property is set to [D:/logs/test/info/info.log]
  20. 20:35:23,838 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
  21. 20:35:23,839 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
  22. 20:35:23,840 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
  23. 20:35:23,841 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG
  24. 20:35:23,841 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
  25. 20:35:23,841 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [FILE_INFO] to Logger[ROOT]
  26. 20:35:23,842 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@4a871190 - Registering current configuration as safe fallback point
  27.  
  28. 2016-07-13 20:35:23 [main] DEBUG com.test.Test - 现在的时间是 Wed Jul 13 20:35:23 CST 2016
  29. 2016-07-13 20:35:23 [main] INFO com.test.Test - This time is Wed Jul 13 20:35:23 CST 2016
  30. 2016-07-13 20:35:23 [main] WARN com.test.Test - This time is Wed Jul 13 20:35:23 CST 2016
  31. 2016-07-13 20:35:23 [main] ERROR com.test.Test - This time is Wed Jul 13 20:35:23 CST 2016

console.txt

  外部输出的日志文件如下:

  

  info.log的内容:

  

  

【Log】logback的配置和使用(一)的更多相关文章

  1. SpringBoot使用logback自定义配置时遇到的坑 --- 在 /tmp目录下自动生成spring.log文件

    问题描述 SpringBoot项目使用logback自定义配置后,会在/tmp/ 目录下生成 spring.log的文件(如下图所示). 解决方案 通过各种资料的搜索,最终发现问题的所在(logbac ...

  2. logback 常用配置详解<appender>

    logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...

  3. 【转】logback 常用配置详解(序)logback 简介

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1101222, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

  4. logback 常用配置详解(二) <appender>

    logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...

  5. spring 3.2.x + struts2 + mybatis 3.x + logback 整合配置

    与前面的一篇mybatis 3.2.7 与 spring mvc 3.x.logback整合 相比,只是web层的MVC前端框架,从spring mvc转换成struts 2.x系列,变化并不大 一. ...

  6. 使用logback.xml配置来实现日志文件输出

    转自:http://sungang-1120.iteye.com/blog/2104296 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback- ...

  7. Logback日志配置的简单使用

    Logback介绍 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和logback-access ...

  8. logback使用配置详解

    title: logback使用配置详解 date: 2017-04-25 16:42:49 tags: 日志 --- 1.介绍 Logback是由log4j创始人设计的另一个开源日志组件,它当前分为 ...

  9. logback常用配置详解及logback简介

    logback 简介(一) Ceki Gülcü在Java日志领域世界知名.他创造了Log4J ,这个最早的Java日志框架即便在JRE内置日志功能的竞争下仍然非常流行.随后他又着手实现SLF4J 这 ...

  10. logback日志配置

    第一步:加入jar包.要加入slf4j和logback的jar包,slf4j需要的jar包为slf4j-api,logback需要2个jar包(logback-classic.logback-core ...

随机推荐

  1. jpa summary

    JPA Prepared by: John Tan March, Contents what Where to use JPA Difference between JPA and Mybatis 1 ...

  2. testng报告发邮件后css样式缺失问题

    问题:用reportng把代替testng报告后,邮件中不显示html样式 解决方案:把依赖的文件,加到邮件附件 Jenkins发邮件的时候,把依赖文件作为附件发送. 结果看到样式了:

  3. Unable to open file '.RES'

    Unable to open file '.RES' 另存工程,带来的隐患,工程图标也改不了. 搜索发现源码里某个man.cpp里带了prgram  resource aaa.res,换成新工程文件名 ...

  4. AES 加密256位 错误 java.security.InvalidKeyException: Illegal key size or default parameters

    Java发布的运行环境包中的加解密有一定的限制.比如默认不允许256位密钥的AES加解密,解决方法就是修改策略文件. 官方网站提供了JCE无限制权限策略文件的下载: JDK8的下载地址: http:/ ...

  5. margin和padding的四种写法

    我们经常会看到CSS样式属性中外边距margin和内边距padding的各种用法,这里做一个小结,但只简单介绍margin,因为它们的用法大同小异. 方法一. margin:10px; //4个外边距 ...

  6. session第二篇

    二 A.application对象 1.application对象实现了用户间数据的共享,可存放全局变量. 2.application对象开始于服务器的启动,终止于服务器的关闭. 3.在用户的前后连接 ...

  7. scanf与printf

    scanf格式控制的完整格式: %     *     m     l或h     格式字符 ①格式字符与printf函数中的使用方式相同,以%d.%o.%x.%c.%s.%f.%e,无%u格式.%g ...

  8. Codeforces Round #535 (Div. 3)

    E: 题意: 给出n个整数ai和m个区间[li,ri] 你可以选择一些区间,并且将区间内的数字都减一.你要选择一些区间,然后使得改变后的数列中maxbi-minbi的值最大. 题解: 假设我们已经知道 ...

  9. 55. Jump Game (Array; Greedy)

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  10. html标签的总结-重复

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...