zoukankan      html  css  js  c++  java
  • 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());

                }

  • 相关阅读:
    Struts2 (二)入门
    Struts2 (一)入门
    Hibernate 配置和注解式 ,关联关系
    Hibernate入门,HQL,双向表关联关系
    web自定义标签
    Spring整合MyBatis 基础
    PHP字符串——字符串函数
    php功能模块学习笔记
    PHP常用符号和函数
    asp xmlhttp 读取文件
  • 原文地址:https://www.cnblogs.com/gisblogs/p/6226182.html
Copyright © 2011-2022 走看看