logback手册-第一章 介绍

来源:互联网 发布:中经网数据库怎么注册 编辑:程序博客网 时间:2024/05/01 07:59
士气的影响是惊人的。有一个运行的系统,即使是一个简单的系统,热情跳跃。即使只是一个矩形,来自新图形软件系统的第一张图片出现在屏幕上时,工作量也会加倍。在这个过程的每一个阶段,都有一个工作体系。我发现团队在四个月内可以成长得比他们所能建立的复杂得多。
弗雷德里克·布鲁克斯,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.jarlogback-core.jar
logback - .*的jar文件是的logback分布,而部分SLF4J-API 1.7.25.jar附带SLF4J,一个单独的项目。
现在让我们开始尝试使用logback。
例1.1:日志的基本模板(logback-examples / src / main / java / chapters / introduction / HelloWorld1.java
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()方法的第一行,通过从类中调用静态方法来获取名为变量 loggerLogger实例。这个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 。
示例:打印记录器状态(logback-examples / src / main / java / chapters / introduction / HelloWorld2.java
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.xmllogback.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,请参阅类路径设置页面上的相关部分