Logback日志工具使用详解

来源:互联网 发布:茗伊 buff数据 编辑:程序博客网 时间:2024/04/30 05:15

    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官方网址为:https://logback.qos.ch/ 

     由于Logback比log4j和SLF4J拥有众多优点,如性能(据说有时达到10倍以上),并且支持自动加载配置文件,自动删除旧的日志文件,以及同一个logback配置文件同时适应开发,测试,生产等。因此Logback官方强烈建议开发人员从log4j转到使用Logback。

    一、实战

      1. logback的maven依赖:   

        <dependency>            <groupId>ch.qos.logback</groupId>            <artifactId>logback-core</artifactId>            <version>1.1.7</version>        </dependency>        <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->        <dependency>            <groupId>ch.qos.logback</groupId>            <artifactId>logback-classic</artifactId>            <version>1.1.7</version>        </dependency>        <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-access -->        <dependency>            <groupId>ch.qos.logback</groupId>            <artifactId>logback-access</artifactId>            <version>1.1.7</version>        </dependency>


     2. logback.xml文件配置:

<?xml version="1.0" encoding="UTF-8"?><configuration debug="true" scan="true" scanPeriod="30 seconds">    <!--控制台输出日志信息-->    <appender name="CONSOLE-LOG" class="ch.qos.logback.core.ConsoleAppender">        <!-- encoders are  by default assigned the type             ch.qos.logback.classic.encoder.PatternLayoutEncoder -->        <encoder>            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%level] - %m%n</pattern>        </encoder>    </appender>    <!-- 输出error级别的日志到error.log文件中 -->    <appender name="ERROR-LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">        <file>logs/error.log</file>        <encoder>            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n</pattern>        </encoder>        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <level>ERROR</level>            <onMatch>ACCEPT</onMatch>            <onMismatch>DENY</onMismatch>        </filter>        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <!-- daily rollover -->            <fileNamePattern>error.%d{yyyy-MM-dd}.log.zip</fileNamePattern>            <!-- keep 30 days' worth of history -->            <maxHistory>30</maxHistory>        </rollingPolicy>    </appender>    <!-- 输出info级别的日志到error.log文件中 -->    <appender name="INFO-LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">        <file>logs/info.log</file>        <encoder>            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n</pattern>        </encoder>        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <level>INFO</level>            <onMatch>ACCEPT</onMatch>            <onMismatch>DENY</onMismatch>        </filter>        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">            <fileNamePattern>info.%i.log</fileNamePattern>            <minIndex>1</minIndex>            <maxIndex>3</maxIndex>        </rollingPolicy>        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">            <maxFileSize>5MB</maxFileSize>        </triggeringPolicy>    </appender>    <appender name="DEBUG-LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">        <file>logs/debug.log</file>        <encoder>            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n</pattern>        </encoder>        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <level>INFO</level>            <onMatch>ACCEPT</onMatch>            <onMismatch>DENY</onMismatch>        </filter>        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">            <fileNamePattern>debug.%i.log</fileNamePattern>            <minIndex>1</minIndex>            <maxIndex>3</maxIndex>        </rollingPolicy>        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">            <maxFileSize>5MB</maxFileSize>        </triggeringPolicy>    </appender>    <root level="debug">        <appender-ref ref="CONSOLE-LOG" />        <appender-ref ref="ERROR-LOG" />        <appender-ref ref="INFO-LOG" />        <appender-ref ref="DEBUG-LOG" />    </root></configuration>

      logback的项目目录结构:

                      

   3.LogBackTest.java       

import org.junit.Test;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class LogBackTest {    private static Logger Log = LoggerFactory.getLogger(LogBackTest.class);    @Test    public void test() {        Log.debug("debug log");        Log.info("info log");        Log.error("error log");    }}

       4. 结果输出:

        4.1 console:        

2017-02-08 14:41:10 [DEBUG] - debug log2017-02-08 14:41:10 [INFO] - info log2017-02-08 14:41:10 [ERROR] - error log

        4.2 日志文件输出:  

               

     debug.log的内容:      

2017-02-08 14:41:10 [LogBackTest:13] - info log
     error.log的内容:     

2017-02-08 14:41:10 [LogBackTest:14] - error log
     info.log的内容:

2017-02-08 14:41:10 [LogBackTest:13] - info log


看,简单吧!



0 0
原创粉丝点击