商道如狼道 发表于 4 天前

第一章 Logback简介

当有一个运行的系统时,纵然是一个简单的系统,也会让团队成员充满热情。当新的图形软件系统第一次展示出一张图片时,
纵然只是一个矩形,也会使努力倍增。在整个开发过程中,始终存在一个可用的系统,这有助于提高团队的工作服从。
什么是logback?

Logback 是一款旨在取代盛行的 log4j 项目标日志记录系统。它由 log4j 的首创人 Ceki Gülcü 设计,并基于十年来设计工业级日志系统的经验。
相比于所有现有的日志系统,logback 更快且占用更少的资源,有时乃至有较大的上风。更紧张的是,logback 提供了其他日志系统所没有的独特而实用的功能。
第一步

为了运行本章中的示例,您须要确保某些jar文件在类路径上存在。请参阅设置页面以获取更多详细信息。
要求

Logback-classic模块除了须要使用logback-classic.jar之外,还须要依赖slf4j-api.jar和logback-core.jar。
logback-*.jar文件是logback的一部分,而slf4j-api-xxx.jar则包罗在另一个独立的项目SLF4J中。
现在让我们开始尝试使用logback。
Example 1.1 根本模板代码
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()方法的第一行,通过调用LoggerFactory类中的静态方法getLogger获取一个Logger实例,并将其赋值到变量logger。这个日志器的名字是“chapters.introduction.HelloWorld1”。
接着调用这个日志器的debug方法,并传递了一个“Hello World.”参数。如许以来,主方法就包罗了一个DEBUG级别的日志语句,消息为“Hello world”。
注意上诉示例不包罗任何对logback类的引用。在许多情况下,就日志记录而言,您的类只须要导入SLF4J类。因此,大多数乃至全部的类都将使用SLF4J API,而且不会对logback的存在有任何的知觉。
您可以通过执行以下下令来运行 chapters.introduction.HelloWorld1 示例应用程序:
java chapters.introduction.HelloWorld1
运行HelloWorld1应用程序将在控制台上输出一行信息。这是logback的默认配置策略,当找不到默认配置文件时,logback会向根日志记录器添加一个ConsoleAppender。
20:49:07.962 DEBUG chapters.introduction.HelloWorld1 - Hello world.
Logback可以通过其内置的状态系统陈诉其内部状态。在logback的生命周期中发生的紧张的事件,可以通过一个名为StatusManager的组件来访问。我们先通过调用StatusPrinter类的静态print()方法来打印logback的内部状态信息。
Example 打印Logger状态
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 DEBUG chapters.introduction.HelloWorld2 - Hello world.
12:49:22,076 |-INFO in ch.qos.logback.classic.LoggerContext - Could NOT find resource
12:49:22,078 |-INFO in ch.qos.logback.classic.LoggerContext - Could NOT find resource
12:49:22,093 |-INFO in ch.qos.logback.classic.LoggerContext - Could NOT find resource
12:49:22,093 |-INFO in ch.qos.logback.classic.LoggerContext - Setting up default configuration.
Logback阐明确在没有找到_logback-test.xml_和_logback.xml_配置文件(稍后讨论)时,会使用一个根本的控制台ConsoleAppender作为默认策略。每一个Appender都可以视作一个输出地址。
Appenders 可以创建许多差别的输出地址,包括console、files、Syslog、TCP Sockets、JMS和许多其他地址。用户也可以轻松地创建自己的Appender,以适配其特定情况。
假如发生错误,logback会自动将内部状态打印到控制台。
在前面的例子中,我们看到了一些简单的日志记录示例。然而,在更大的应用程序中,实际的日志记录过程并不会有很大的差别。日志记录语句的一般模式不会改变。
只有配置过程会有所差别。但是,您可能盼望根据自己的需求定制或配置logback。关于logback配置的内容将在后续章节中举行讲解。
在上述示例中,我们通过调用StatusPrinter.print()方法指示logback打印其内部状态。Logback的内部状态信息对于诊断与logback相关的故障非常有效。
为了在您的应用程序中启用日志记录,须要完成三个须要的步骤:

[*]起首,您须要配置logback情况。这可以通过多种方式完成,有些方法更为复杂,以后会详细先容。
[*]接下来,在每个盼望举行日志记录的类中,通过调用org.slf4j.LoggerFactory类的getLogger()方法来获取Logger实例,并将当前类名或类本身作为参数传递。
[*]末了,使用此logger实例调用其打印方法,即debug()、info()、warn()和error()方法,这些方法将在已配置的appenders上产生日志输出。
构建 logback

logback是一个广泛使用的日志框架,它依赖于Maven这个开源构建工具作为其构建工具。
一旦你安装了Maven,从解压缩的日志包目次中执行mvn install下令就可以轻松地构建logback项目及其所有模块。Maven会自动下载所需的外部库。
logback发行版包罗完备的源代码,因此你可以修改logback库的部分内容并构建自己的版本。乃至可以重新分发修改后的版本,只要服从LGPL许可证或EPL许可证的条件即可。
假如你想在IDE下构建logback,请参阅类路径设置页面的相关部分。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 第一章 Logback简介