【Log】logback的配置和使用

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使用

  • 先新建一个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
 9 public class Test {
10
11     final static  Logger logger  =  LoggerFactory.getLogger(Test.class );
12
13     public static void main(String[] args) throws InterruptedException {
14
15
16         logger.debug( "现在的时间是 {}" ,  new Date().toString());
17
18         logger.info( " This time is {}" ,  new Date().toString());
19
20         logger.warn( " This time is {}" ,  new Date().toString());
21
22         logger.error( " This time is {}" ,  new Date().toString());
23
24     }
25
26 }

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 [email protected]: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 [email protected] - 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 [email protected] - Roll-over at midnight.
16 20:35:23,824 |-INFO in [email protected] - 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 [email protected] - 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的内容:

  

  

时间: 2024-10-29 19:12:57

【Log】logback的配置和使用的相关文章

logback 常用配置详解(二) &lt;appender&gt;

logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的组件. <appender>有两个必要属性name和class.name指定appender名称,class指定appender的全限定名. 1.ConsoleAppender: 把日志添加到控制台,有以下子节点: <encoder>:对日志进行格式化.(具体参数稍后讲解 ) &

logback 常用配置详解&lt;appender&gt;

logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的组件. <appender>有两个必要属性name和class.name指定appender名称,class指定appender的全限定名. 1.ConsoleAppender: 把日志添加到控制台,有以下子节点: <encoder>:对日志进行格式化.(具体参数稍后讲解 ) <

SL4J+logback基本配置

SL4J简介 SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统,也就是说它只是一个抽象层(abstract layer),它允许你在后台使用任意一个日志类库.如果你开发的是类库或者嵌入式组件,那么就应该考虑采用SLF4J,因为不可能影响最终用户选择哪种日志系统.在另一方面,如果是一个简单或者独立的应用,确定只有一种日志系统,那么就没有使用SLF4J的必要. Pom配置 <properties> &l

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系列,变化并不大 一.pom.xml 配置 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&

logback常用配置详解及logback简介

logback 简介(一) Ceki Gülcü在Java日志领域世界知名.他创造了Log4J ,这个最早的Java日志框架即便在JRE内置日志功能的竞争下仍然非常流行.随后他又着手实现SLF4J 这个“简单的日志前端接口(Façade)”来替代Jakarta Commons-Logging . LOGBack,一个“可靠.通用.快速而又灵活的Java日志框架”. 要在工程里面使用logback需要以下jar文件: slf4j-api-1.6.1.jar 官网网址:http://www.slf4

logback 简单配置总述

近来有一个系统日志分模块输出的需求.其实需求很简单,只是第一次使用slf4j+logback的日志架构.故参照了很多博客和一些实例进行配置和测试. 在测试过程中发现网上有很多配置是错误的,有很多是误导的,故将自己前前后后,反反复复测试了很多遍,最后完美通过的实例拿上来和大家分享一下. 一.主要标签释义(因为都可以在网上查找到,我只列举几个重要的和我用到的) 1.configuration.是整个配置文件的父标签.有三个属性,我用到的是debug,默认false,因为途中需要看调试信息,查看配置是

(转)Spring boot——logback.xml 配置详解(三)&lt;appender&gt;

文章转载自:http://aub.iteye.com/blog/1101260,在此对作者的辛苦表示感谢! logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的组件. <appender>有两个必要属性name和class.name指定appender名称,class指定appender的全限定名. 1.ConsoleAppender: 把日

Logback日志配置的简单使用

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

logback 常用配置详解(序)logback 简介

logback 常用配置详解(序)logback 简介 摘自:http://aub.iteye.com/blog/1101222 博客分类: Log java loglogback 原创文章,转载请指明出处:http://aub.iteye.com/blog/1101222, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透彻的理解其配置 logback 常用配置详解(序)logback 简介 logback 常用配置详解(一)<confi