以下内容翻译整理自logback
官方手册,地址:logback官方手册
安装配置
为了运行文档中提供的示例,需要将以下jar
添加到类路径中
logback-core-1.3.0-alpha4.jar
logback-classic-1.3.0-alpha4.jar
logback-examples-1.3.0-alpha4.jar
slf4j-api-1.8.0-beta1.jar
logback-*.jar
文件是logback
发行版的一部分,而SLF4J -api-1.8.0-beta1.jar
附带SLF4J
,是一个单独的项目。
要在Maven
项目中使用logback-classic
,请在项目的pom
文件中声明以下依赖项。
ch.qos.logback
logback-classic
1.3.0-alpha4
注意,除了logback-classic.jar
之外,根据Maven
的传递性规则,上述声明将自动将slf4j-api.jar
和logback-core.jar
拉入项目。
如果要在Maven
项目中包含日志回溯访问,请在项目的pom
文件中声明以下依赖项。
ch.qos.logback
logback-access
1.3.0-alpha4
示例1:日志基本模板
package com.wangbo.cto.logback;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @date 2019/9/12 23:43
* @auther wangbo
*/
public class HelloWorld1 {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger("com.wangbo.cto.logback.HelloWorld1");
logger.debug("Hello World.");
}
}
在main()
方法的第一行,通过调用LoggerFactory
类中的静态方法getLogger()
,为名为logger
的变量分配了一个Logger
实例。这个logger
被命名为com.wangbo.cto.logback.HelloWorld1
。
注意,上面的示例没有引用任何logback
类。在大多数情况下,就日志记录而言,类只需要导入SLF4J
类。因此,对于绝大多数类而言,都只会使用到SLF4J API
,不会用到logback
。
运行该方法,控制台会打印出下面内容,根据logback
的默认配置策略,当没有找到默认配置文件时,logback
将向根日志记录器添加一个ConsoleAppender
。
23:59:21.955 [main] DEBUG com.wangbo.cto.logback.HelloWorld1 - Hello World.
示例2:日志内部状态
logback
可以使用内置的状态系统报告关于其内部状态的信息。可以通过名为StatusManager
的组件访问logback
生命周期中发生的重要事件。现在,让我们通过调用StatusPrinter
类的静态print()
方法来指示logback
打印其内部状态。
package com.wangbo.cto.logback;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.util.StatusPrinter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @date 2019/9/12 23:43
* @auther wangbo
*/
public class HelloWorld1 {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger("com.wangbo.cto.logback.HelloWorld1");
logger.debug("Hello World.");
//打印logback内部状态
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
StatusPrinter.print(lc);
}
}
执行代码,打印出以下内容。
00:08:27.106 [main] DEBUG com.wangbo.cto.logback.HelloWorld1 - Hello World.
00:08:27,074 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
00:08:27,074 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
00:08:27,074 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
00:08:27,074 |-INFO in ch.qos.logback.classic.BasicConfigurator@45283ce2 - Setting up default configuration.
logback
提示说,由于未能找到logback -test.xml
,logback.groovy
和logback .xml
配置文件,它使用默认策略配置自己,默认策略是一个基础的ConsoleAppender
。Appender
可以被看作是一个输出目的地的类。Appender
可以作为许多不同的目的地,包括控制台、文件、系统记录、TCP套接字、JMS等等。用户还可以根据自己的具体情况创建自定义的Appender
。
注意,如果出现错误,logback
将自动在控制台上打印其内部状态。
logback
的内部状态信息对于诊断与logback
相关的问题非常有用。下面列出了在应用程序中启用日志记录所需的三个步骤。
(1)配置logback环境。
(2)在希望执行日志记录的每个类中,通过调用org.slf4j.LoggerFactory
类的getLogger()
方法,将当前类名或类本身作为参数,获取一个Logger
实例。
(3)使用logger
实例调用它的打印方法,即debug()、info()、warn()和error()方法。将会在配置的appenders
上生成日志输出。