logback手册-第一章 介绍

士气的影响是惊人的。有一个运行的系统,即使是一个简单的系统,热情跳跃。即使只是一个矩形,来自新图形软件系统的第一张图片出现在屏幕上时,工作量也会加倍。在这个过程的每一个阶段,都有一个工作体系。我发现团队在四个月内可以成长得比他们所能建立的复杂得多。
弗雷德里克·布鲁克斯,JR。, 人月神话

作者:CekiGülcü,SébastienPennec,Carl Harris
版权所有©2000-2017,QOS.ch

什么是logback?
Logback旨在作为流行的log4j项目的继任者。它由log4j的创始人CekiGülcü设计。它建立在十年设计强大日志系统的经验基础上。由此产生的产品Logback,比所有现有的日志系统,速度更快,更小,有时还有很大的差距。同样重要的是,logback提供了其他日志记录系统中缺少的 独特且相当有用的功能

第一步
为了运行本章中的示例,您需要确保某些jar文件存在于类路径中。请参阅 设置页面  了解更多详情。
要求
Logback-classic模块除了需要在类路径上使用 logback-classic.jar 之外,还 需要  slf4j-api.jar logback-core.jar
logback - .*的jar 文件是的logback分布,而部分 SLF4J-API 1.7.25.jar 附带 SLF4J ,一个单独的项目。
现在让我们开始尝试使用logback。
package chapters.introduction;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld1 {

  public static void main(String[] args) {

    Logger logger = LoggerFactory.getLogger("chapters.introduction.HelloWorld1");
    logger.debug("Hello world.");

  }
}


HelloWorld1 类是在 chapters.introduction 包中定义的 。它首先导入 在SLF4J API中定义的类 Logger  和 LoggerFactory 类,特别是在  org.slf4j 包内。
在main()方法的第一行,通过从类中调用静态方法来获取名为变量  logger Logger 实例。这个logger被命名为“chapters.introduction.HelloWorld1”。主要方法继续调用这个logger的debug方法,传递“Hello World”作为参数的方法。我们说主要的方法包含了DEBUG级别的日志语句,其中包含消息“Hello world”。 
请注意,上面的例子没有引用任何logback类。在大多数情况下,就日志而言,你的类只需要导入SLF4J类。因此,绝大多数(如果不是全部的话)你的类将使用SLF4J API,并且会忽视logback的存在。
您可以使用以下命令启动第一个示例应用程序 chapter.introduction.HelloWorld1
java chapters.introduction.HelloWorld1


启动 HelloWorld1 应用程序将在控制台上输出一行。依靠logback的默认配置策略,当没有找到默认的配置文件时,logback将会添加一个 ConsoleAppender 到root logger。
20:49:07.962 [main] DEBUG chapters.introduction.HelloWorld1 - Hello world.
Logback可以使用内置的状态系统报告有关其内部状态的信息。在logback的生命周期中发生的重要事件可以通过一个叫做组件来访问  StatusManager 。暂时让我们通过调用类的静态 print() 方法来指示logback打印其内部状态  StatusPrinter  。
package chapters.introduction;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.util.StatusPrinter;

public class HelloWorld2 {

  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger("chapters.introduction.HelloWorld2");
    logger.debug("Hello world.");

    // print internal state
    LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
    StatusPrinter.print(lc);
  }
}


运行该 HelloWorld2 应用程序将产生以下输出:
12:49:22.203 [main] DEBUG chapters.introduction.HelloWorld2 - Hello world.
12:49:22,076 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
12:49:22,078 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
12:49:22,093 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
12:49:22,093 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Setting up default configuration.


Logback解释说,找不到  logback-test.xml logback.xml 配置文件(稍后讨论),它使用其默认策略(这是一个基本的策略)来配置它自己 ConsoleAppender 。一个 Appender 是一个可以被看作输出目的地的类。appender存在许多不同的目的地,包括控制台,文件,系统日志,TCP Sockets,JMS等等。用户也可以根据自己的具体情况轻松创建自己的Appender。

请注意,如果发生错误,logback将自动在控制台上打印其内部状态。

前面的例子很简单。在更大的应用程序中的实际日志记录将不会有所不同。日志记录的一般模式不会改变。只有配置过程会有所不同。但是,您可能需要根据您的需要自定义或配置logback。Logback配置将在后面的章节中介绍。

请注意,在上面的例子中,我们已经指示logback通过调用 StatusPrinter.print() 方法来打印其内部状态 。Logback的内部状态信息在诊断与登录有关的问题时非常有用。
这是为了在应用程序中启用日志记录所需的三个步骤的列表。
1. 配置logback环境。你可以用几种或多或少的复杂方法来做到这一点。稍后再说。
2. 在你想要执行日志的每个类中, Logger 通过调用 org.slf4j.LoggerFactory 类的  getLogger() 方法来检索一个 实例 ,将当前的类名或类本身作为参数传递。
3. 通过调用它的打印方法,即debug(),info(),warn()和error()方法来使用这个记录器实例。这将在配置的appender上产生日志输出。
建立logback
作为其构建工具,logback依赖于 Maven ,一个广泛使用的开源构建工具。

一旦你安装了Maven,构建包括它所有模块的logback项目应该就像 mvn install 在解除logback分发的目录中发出一个命令一样简单。Maven会自动下载所需的外部库。

Logback发行版包含完整的源代码,您可以修改部分logback库并构建您自己的版本。只要您遵守LGPL许可证或EPL许可证的条件,您甚至可以重新分配修改后的版本。

要在IDE下构建logback,请参阅 类路径设置页面上的相关部分

猜你喜欢

转载自blog.csdn.net/sjzylc/article/details/78861065