• Logback_日志使用详解(转)


    概述

    Logback建立于三个主要类之上:日志记录器(Logger),输出端(Appender)和日志格式化器(Layout)。这三种组件协同工作,使开发者可以按照消息类型和级别来记录消息,还可以在程序运行期内控制消息的输出格式和输出目的地。

    1.日志记录器(Logger):控制要输出哪些日志记录语句,对日志信息进行级别限制。
    2.输出端(Appender):指定了日志将打印到控制台还是文件中。

    3.日志格式化器(Layout):控制日志信息的显示格式。

    日志记录器Logger

    在logback中只有一个日志记录器Logger,继承自org.slf4j.Logger且是final的。

    public final class Logger implements org.slf4j.Logger, LocationAwareLogger,

    AppenderAttachable<ILoggingEvent>, Serializable {

    }

    输出端Appender

    Logback提供了非常丰富的输出端Appender。

     

    其中,常用的Appender有以下几个:

    ConsoleAppender:打印日志信息到控制台,相当于System.out或者System.err。

    FileAppender:打印日志信息到文件中。

    RollingFileAppender:根据RollingPolicy和TriggeringPolicy将日志打到相应的文件中。

    RollingFileAppender有两个与之互动的重要子组件。第一个是RollingPolicy,负责滚动。第二个是TriggeringPolicy,决定是否以及何时进行滚动。所以,RollingPolicy负责“什么”, TriggeringPolicy负责“何时”。 要想RollingFileAppender起作用,必须同时设置RollingPolicy和TriggeringPolicy。不过,如果RollingPolicy也实现了TriggeringPolicy接口,那么只需要设置RollingPolicy。

    让我们来看看这些策略都有哪些吧?

     

    其中,TimeBasedRollingPolicy比较特殊,它同时继承了RollingPolicy和TriggerPolicy。即配置它一个也可以的。

    另外在Appender中还使用了一个组件Encoder。

    Encoder负责两件事,一是把事件转换为字节数组,二是把字节数组写入输出流。其结构如下:

     

    目前,PatternLayoutEncoder是唯一有用的encoder,它基本上是封装了PatternLayout,让PatternLayout负责大多数工作。因此,似乎encoder并没有带来多少好东西,反而只有不需要的复杂性。然而,我们希望当新的、强大的encoder到来时,这种印象会改变。

    日志格式化器Layout

    其结构如下所示:

     

    使用方法

    logback配置

    Logback可以通过编程式配置,或用XML格式的配置文件进行配置。

    Logback采取下面的步骤进行自我配置:

    1. 尝试在classpath下查找文件logback-test.xml;

    2. 如果文件不存在,则查找文件logback.xml;

    3. 如果两个文件都不存在,logback用BasicConfigurator自动对自己进行配置,这会导致记录输出到控制台。

    Logback嵌入代码使用

    引入需要的包:

    import org.slf4j.Logger;

    import org.slf4j.LoggerFactory;

    生产logger实例:

    要打印的类的开始部分:

    private final Logger logger = LoggerFactory.getLogger(getClass());

    使用logger实例打印日志

    打印形式:

                if (logger.isDebugEnabled()) {

                    logger.debug("To modify role(name={}) to role(name={}).",

                            updated.getName(), role.getName());

                }

  • 相关阅读:
    Uva 1636 决斗
    数论初步
    Gym 100169A 最短路
    Uva 12169 不爽的裁判 模运算
    Uva 11582 巨大的斐波那契数 模运算
    Uva 10791 最小公倍数的最小和 唯一分解定理
    Uva 10375 选择与除法 唯一分解定理
    poj 3485 区间选点
    第二届团体程序设计天梯赛
    Uva 12657 双向链表
  • 原文地址:https://www.cnblogs.com/gisblogs/p/6226182.html
Copyright © 2020-2023  润新知