Logback文档

  • 介绍

第一章:介绍

The morale effects are startling. Enthusiasm jumps when there is a running system, even a simple one. Efforts redouble when the first picture from a new graphics software system appears on the screen, even if it is only a rectangle. One always has, at every stage in the process, a working system. I find that teams can grow much more complex entities in four months than they can build.

—FREDERICK P. BROOKS, JR., The Mythical Man-Month

Authors: Ceki Gülcü, Sébastien Pennec, Carl Harris
Copyright © 2000-2017, QOS.ch

Creative Commons License
This document is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License

什么是 logback?

和訳 (Japanese translation) (Chinese translation)

Logback 计划成为流行的log4j项目的继任者。 它是由log4j的发起人 Ceki Gülcü 设计的。 它基于十年的强大的日志系统上做的设计。logback 在很大程度上,比现存所有的日志系统更快 并且更小巧。更重要的是 logback 提供其他日志系统缺失的 独特而且很有用 的特性。

第一步

In order to run the examples in this chapter, you need to make sure that certain jar files are present on the classpath. Please refer to the setup page for further details.

必要条件

Logback-classic 模块需要 slf4j-api.jarlogback-core.jar 以及 logback-classic.jar 放到类类路径中。

这些文件 logback-*.jar 是 logback 发行的一部分, 然而 slf4j-api-${slf4j.version}.jar 是在另外一个独立的项目 SLF4J中。

让我们开始体验一下 logback。

示例 1.1: 日志的基本模式 (logback-examples/src/main/java/chapters/introduction/HelloWorld1.java)

HelloWorld1 在包 chapters.introduction 中定义。它首先导入了类 Logger 和类 LoggerFactory ,这些类在 SLF4J 的 API中,都是以包 org.slf4j 开头的。

在方法 main() 的第一行,通过调用类 LoggerFactory 的静态方法 getLogger 获取的对象实例 Logger 赋值给变量 logger 。该日志句柄被命名为 “chapters.introduction.HelloWorld1″。main方法调用logger的方法 debug 传递参数 “Hello World” 。 我们可以说 main 方法包含一条打印DEBUG日志”Hello world”的语句。

注意,上面的例子中没有引用任何 logback 的类。 在大多数情况下,日志是你关心的,但你的类只需要导入 SLF4J 的类。因此,多数情况下, 你的类将会使用 SLF4J 的API,并不会察觉到 logback 的存在。

你可以运行第一个样例程序,chapters.introduction.HelloWorld1 需要通过命令:

来运行程序 HelloWorld1 ,并在控制台打印出一行文本。 当没有找到默认的配置文件时,logback 将会增加一个 ConsoleAppender 根日志句柄。

20:49:07.962 [main] DEBUG chapters.introduction.HelloWorld1 – Hello world.

Logback 可以通过内建的状态系统提供它内部的状态信息。当 logback 的生命周期中 有重要的事件发生时,也可以通过组件 StatusManager 获取到。 这时候,我们可以通过执行类 StatusPrinter 的方法 print() 来打印 logback 的内部状态。

示例: 打印句柄状态 (logback-examples/src/main/java/chapters/introduction/HelloWorld2.java)

运行程序 HelloWorld2 将会输出下面的内容:

Logback 打印出没有找到配置文件 logback-test.xmllogback.xml (我们后续讨论), 它会采用默认的策略,也就是基本的 ConsoleAppender。一个 Appender 可以被当作一个输出目的地。Appenders的存在有很多用途, 包括:控制台、文件、系统日志、TCP套接字、JMS以及更多的。用户也可以针对特殊的场合 轻松地创建出自己的Appenders。

在异常情况下, logback 会自动打在控制台印出它的内部状态。

之前的例子特别简单。在真实大型的程序中肯定是不一样的。但日志语句大体上不会有改变。 只是配置过程可能会不一样。然而,你可以想根据你的需要来自定义或者配置 logback 。 有关 logback 的配置将会在后续的章节中介绍。

上面的例子中,我们通过调用方法 StatusPrinter.print() 让 logback 打印出 它的内部状态信息。在诊断 logback 相关的问题时,它的内部状态信息是非常有用的。

在你的程序中要使用日志需要下面的三步。

  1. 配置 logback 环境。你可以通过更简单或者复杂的方式来做。后面会介绍更多。
  2. 在每个你想要记录日志的地方,通过执行类 org.slf4j.LoggerFactory 的方法 getLogger() 并传递当前类的名称或者类本身作为参数来获取 Logger 的实例对象。
  3. 通过 logger 实例来执行命名为 debug(), info(), warn() 和 error() 的方法来打印。 这样会向已经配置好的 appender 输出日志。

构建 logback

至于它的构建工具, logback 采用了使用广泛的开源构建工具 Maven

一旦你安装了 Maven,就可以在 logback 解压后的目录中执行命令 mvn
install
来构建它以及所有模块。Maven 将会自动下载依赖的外部库。

Logback 发行版完整的源码,你可以修改 logback 的源码并构建你自己的版本。 你甚至可以重新发行修改后的版本,只要你附加 LGPL 或者 EPL 证书的条款即可。

对于在 IDE 中构建 logback的情况,请参考 类路径设置的相关章节

  • 参考

本文为原创,如果您当前访问的域名不是surenpi.com,请访问“素人派”。

发表评论

电子邮件地址不会被公开。 必填项已用*标注