美文网首页
Logback 日志第一章简介

Logback 日志第一章简介

作者: 超音速6 | 来源:发表于2020-04-19 14:47 被阅读0次

logback 分为三个模块:logback-core,logback-classic和logback-access。

logback-core模块为其他两个模块奠定了基础。
logback-classic模块可以与log4j的显着改进版本同化。
logback-access模块​​与Servlet容器(例如Tomcat和Jetty)集成,以提供HTTP访问日志功能。


什么是 logbcak

Logback旨在作为流行的log4j项目的后继者。它是由log4j的创始人CekiGülcü设计的。它建立在十年的工业强度测井系统设计经验的基础上。最终的产品(即logback)比所有现有的logging系统更快,并且占用的空间更小,有时间隔很大。同样重要的是,logback提供了其他日志记录系统中缺少的独特且相当有用的功能。

第一步

要求
Logback-classic模块除了在类路径上的logback-classic.jar外,还 要求存在 slf4j-api.jar和logback-core.jar。

logback-*.jar文件是logback发行版的一部分,而SLF4J附带SLF4J,这是一个单独的项目。

现在让我们开始对logback进行试验。

示例1.1:日志记录的基本模板(logback-examples/src/main/java/chapter /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中定义的LoggerLoggerFactory类,特别是在 org.slf4j软件包中。

在main()方法的第一行,名为logger的变量被分配给一个logger实例,该实例通过从LoggerFactory类调用静态getLogger方法来检索。这个日志程序名为“chaptersintroduction . helloworld1”。主方法继续调用这个日志程序的调试方法,并传递“Hello World”作为参数。我们说主方法包含一个带有消息“Hello world”的level DEBUG日志语句。

请注意,以上示例未引用任何logback类。在大多数情况下,就日志记录而言,您的类仅需要导入SLF4J类。因此,绝大多数(如果不是全部)您的类将使用SLF4J API,并且不会考虑logback的存在。

您可以使用以下命令启动第一个示例应用程序“ chapters.introduction.HelloWorld1 ”:
java pages.introduction.HelloWorld1

启动HelloWorld1应用程序将在控制台上输出一行。根据logback的默认配置策略,当未找到默认配置文件时,logback将ConsoleAppender在根记录器中添加一个。
20:49:07.962 [main]调试Chapters.introduction.HelloWorld1-Hello world。

Logback可以使用内置的状态系统报告关于其内部状态的信息。在logback生命周期中发生的重要事件可以通过一个名为StatusManager的组件访问。现在,让我们通过调用StatusPrinter类的静态print()方法来指示logback打印其内部状态。

示例:打印日志程序状态(logback-examples/src/main/java/chapter /introduction/HelloWorld2.java)
···
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应用程序将产生以下输出:

14:38:05.663 [main] DEBUG com.ltx.demo1.HelloWorld2 - Hello world.
14:38:05,613 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
14:38:05,613 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
14:38:05,614 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
14:38:05,617 |-INFO in ch.qos.logback.classic.BasicConfigurator@2e5d6d97 - Setting up default configuration.

Logback解释说,由于未能找到Logback -test.xml和Logback .xml配置文件(稍后讨论),它使用自己的默认策略配置自己,该策略是一个基本的ConsoleAppender。追加器是可以被视为输出目的地的类。附加程序存在于许多不同的目的地,包括控制台、文件、Syslog、TCP套接字、JMS等等。用户还可以根据自己的具体情况轻松创建自己的附加程序。

注意,如果出现错误,logback将自动在控制台中打印其内部状态。

前面的例子相当简单。在更大的应用程序中实际的日志记录不会有太大的不同。日志记录语句的一般模式不会改变。只有配置过程不同。但是,您可能希望根据需要自定义或配置logback。后面几章将讨论Logback配置。

注意,在上面的示例中,我们已经指示logback通过调用statusprint .print()方法来打印其内部状态。Logback的内部状态信息对于诊断与Logback相关的问题非常有用。

下面列出了在应用程序中启用日志记录所需的三个步骤。

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

建筑logback

作为其构建工具,logback依赖于Maven(一种广泛使用的开源构建工具)。

一旦安装了Maven,构建logback项目(包括其所有模块)应该mvn install与在未归档logback分发目录中发出命令一样容易。Maven将自动下载所需的外部库。

相关文章

网友评论

      本文标题:Logback 日志第一章简介

      本文链接:https://www.haomeiwen.com/subject/fimpbhtx.html