第一章 介绍

标题标题logback是什么?

Logback的目的是作为流行的log4j项目的继承者。它由log4j的创始人Ceki Gülcü设计。它建立在十年的设计工业强度测井系统的经验之上。由此产生的产品,即logback,比所有现有的日志系统更快,占用的空间更小,有时甚至大得多。同样重要的是,logback提供了其他日志记录系统所缺少的独特和相当有用的特性。

Hello World

为了运行本章中的示例,需要确保类路径上存在某些jar文件。详情请参阅安装页面。

需求

除了Logback-classic .jar之外,Logback-classic模块还需要在类路径中存在slf4j-api.jar和logback-core.jar。
logback-*.jar文件是logback发行版的一部分,而SLF4J -api-2.0.0-alpha4.jar是随SLF4J一起发布的,这是一个单独的项目。
现在让我们开始使用logback进行实验。
例1.1:日志的基本模板(logback-examples/src/main/java/章/引言/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类在chapter .introduction包中定义。它首先导入SLF4J API中定义的Logger和LoggerFactory类,特别是在组织内部。slf4j包。
在main()方法的第一行,为名为logger的变量赋值一个logger实例,该实例通过调用LoggerFactory类的静态getLogger方法获取。这个日志被命名为“章节.引言. helloworld1”。main方法继续调用该日志记录器的调试方法,传递“Hello World”作为参数。我们说主方法包含一个DEBUG级别的日志语句,消息为“Hello world”。
注意,上面的示例没有引用任何logback类。在大多数情况下,就日志记录而言,您的类只需要导入SLF4J类。因此,绝大多数(如果不是全部)类将使用SLF4J API,并且不会注意到logback的存在。
您可以使用以下命令启动第一个示例应用程序:

java chapters.introduction.HelloWorld1

启动HelloWorld1应用程序将在控制台上输出一行代码。通过logback的默认配置策略,当没有找到默认配置文件时,logback将向根日志记录器添加一个ConsoleAppender。

20:49:07.962 [main] DEBUG章节。introduction. helloworld1 - Hello world。

Logback可以使用内置的状态系统报告关于其内部状态的信息。在logback的生命周期中发生的重要事件可以通过一个名为StatusManager的组件访问。目前,让我们通过调用StatusPrinter类的静态print()方法来指示logback打印它的内部状态。
示例:打印日志状态(logback-examples/src/main/java/章/引言/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章节。introduction. helloworld2 - Hello world。
12:49:22 076 |-INFO in ch.qos.logback.classic。LoggerContext[default] -无法找到资源
12:49:22 078 |-INFO在ch.qos.logback.classic。LoggerContext[default] -无法找到资源[logback-test.xml]
12:49:22 093 |-INFO in ch.qos.logback.classic。LoggerContext[default] -无法找到资源[logback.xml]
12:49:22 093 |-INFO in ch.qos.logback.classic。LoggerContext[default] -设置默认配置。

Logback解释说,由于找不到Logback -test.xml和Logback .xml配置文件(稍后讨论),它使用默认策略配置自己,这是一个基本的ConsoleAppender。Appender是一个可以被视为输出目的地的类。追加器存在于许多不同的目的地,包括控制台、文件、Syslog、TCP套接字、JMS等等。用户还可以根据自己的具体情况轻松创建自己的Appenders。
注意,在出现错误的情况下,logback将自动在控制台上打印其内部状态。
前面的例子相当简单。在更大的应用程序中实际的日志记录不会有太大的不同。日志语句的一般模式不会改变。只有配置过程是不同的。但是,您可能希望根据您的需要自定义或配置日志回退。后续章节将介绍Logback配置。
注意,在上面的示例中,我们已经指示logback通过调用StatusPrinter.print()方法来打印其内部状态。Logback的内部状态信息在诊断与Logback相关的问题时非常有用。
下面列出了在应用程序中启用日志记录所需的三个步骤。

  1. 配置logback环境。您可以用几种或多或少复杂的方法来实现这一点。稍后再详细介绍。
  2. 在您希望执行日志记录的每个类中,通过调用org.slf4j检索Logger实例。LoggerFactory类的getLogger()方法,将当前类名或类本身作为参数传递。
  3. 通过调用该日志记录器实例的打印方法,即debug()、info()、warn()和error()方法,使用该日志记录器实例。这将在配置的appender上产生日志输出。

编译logback

作为其构建工具,logback依赖于Maven,这是一种广泛使用的开源构建工具。
安装Maven之后,构建logback项目(包括它的所有模块)应该非常简单,只需从解压logback发行版的目录中发出mvn install命令即可。Maven将自动下载所需的外部库。
Logback发行版包含完整的源代码,这样您就可以修改部分Logback库并构建自己的版本。只要遵守LGPL许可或EPL许可的条件,您甚至可以重新分发修改后的版本。
要在IDE下构建logback,请参阅类路径设置页面的相关部分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值