Logback日志工具使用详解

Logback日志工具使用详解由于Logback比log4j和SLF4J拥有众多优点,如性能(据说有时达到10倍以上),并且支持自动加载配置文件,自动删除旧的日志文件,以及同一个logback配置文件同时适应开发,测试,生产等。因此Logback官方强烈建议开发人员从log4j转到使用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官方网址为: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的项目目录结构:

                      Logback日志工具使用详解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 log
2017-02-08 14:41:10 [INFO] - info log
2017-02-08 14:41:10 [ERROR] - error log

        4.2 日志文件输出:  

        Logback日志工具使用详解       

     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

看,简单吧!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149575.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python实现excel转json的例子[通俗易懂]

    python实现excel转json的例子[通俗易懂]python实现excel转json的例子(改进版)由于数值策划给出数值是excel表格,但前台flash程序用的又是json格式。服务器也用了json格式,而json又是utf-8编码的,用C++实现,太痛苦。鉴于此,尝试用python实现看看。没想到,python实现确实很简单,一个多小时搞定(有搜索事半功倍啊)。今天我又对它做了一点改进。主要1、是支持float和多表格;2、在exc…

    2022年5月24日
    32
  • Mit6.S081-实验1-Xv6 and Unix utilities

    Mit6.S081-实验1-Xv6 and Unix utilitiesMit6.S081-实验1-Xv6andUnixutilities前言一、Bootxv61,实验目的2,操作流程1)切换到xv6-labs-2020代码库的lab1分支2)启动xv63)测试xv64)过程分析5)其他操作二、在xv6中添加一个自己编写的程序1,源码准备2,编译配置3,测试添加程序4,过程分析三、xv6中shell简析前言一、Bootxv61,实验目的利用qemu启动xv62,操作流程1)切换到xv6-labs-2020代码库的lab1分支gitcheckoutut

    2022年9月26日
    0
  • eclipse修改工程文件编码

    eclipse修改工程文件编码eclipse修改工程文件编码

    2022年4月23日
    53
  • uwsgi停止[通俗易懂]

    uwsgi停止[通俗易懂]uwsgi停止和nginx配置uwsgi停止nginx配置uwsgi停止必须在uwsgi.ini中配置好pidfile=绝对路径///uwsgi.pid这样才有pid文件uwsgi–stopuwsgi.pid这样就可以停止了有一点需要注意:如果没有uwsgi.pid又需要停止uwsgi服务可以netstat…

    2022年9月12日
    0
  • Mac版本NavicatPremium15 激活码【2021最新】

    (Mac版本NavicatPremium15 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~70…

    2022年3月26日
    137
  • c程序中整形变量只能存放整数实型变量只能存放浮点数_c语言合法的实型常量

    c程序中整形变量只能存放整数实型变量只能存放浮点数_c语言合法的实型常量vb中,以下变量类型1,数字型变量(numeric)2,字符串型变量(string)3,日期型变量(date)4,对象型变量(object)5,变体型变量(variant)这几个vb变量类型中,最最主要的就是前面两个,数字型变量和字符串型变量.意思很简单,数字型可以用来存放数字,字符串型存放文本.下面就来详细介绍这几种变量.1.数字型数字型变量有多种类型,在咱们的vb里,有3中数字数据类型1;整形…

    2022年10月26日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号