logback_1_logback日志框架简介与HelloWorld

一、logback日志框架简介

1、logback的定位

logback作为log4j的接替者,具有通用性很强的架构,以适配各种场景下的使用。

2、logback的组成模块

logback被分为了3个模块:logback-corelogback-classiclogback-access

(1) logback-core

  • 为其它两个模块做准备工作;
  • 你也可以轻易地在logback-core的基础上建立自己的模块;

(2) logback-classic

  • 可以理解为log4j的主要升级版;
    • 原生地实现了log4j的API,因此你可以轻易地在logback日志框架和其它的日志框架(如log4j、java.util.logging[JUL])之间进行切换。
  • 后续我们只用logback-classic,说logback,指的就是logback-classic。

(3) logback-access

  • 集成了Servlet容器(如Tomcat、Jetty),从而提供了HTTP可访问的日志功能。

二、logback的HelloWorld工程

1、三步骤

  • Step1:
    • 配置logback环境。
  • Step2:
    • 在你想要打印日志的类中,用LoggerFactory的静态方法getLogger(……)来获取出一个Logger实例,getLogger方法的入参用这个类的String全名或者这个类的字节码对象都可以。
  • Step3:
    • 在方法中使用上一步获取到的Logger实例调用debug()/info()/warn()/error()方法来将日志打印至输出目的地。

2、HelloWorld

(1)举例

首先,为自己的工程添加logback-classic的依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>red.var.learning</groupId>
  <artifactId>logback-learning</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
  	<dependency>
  		<groupId>ch.qos.logback</groupId>
  		<artifactId>logback-classic</artifactId>
  		<version>1.2.3</version>
  	</dependency>
  </dependencies>
</project>

查看依赖树可以发现logback-classic.jar还依赖logback-core.jar和slf4j-api.jar:

[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ logback-learning ---
[INFO] red.var.learning:logback-learning:jar:0.0.1-SNAPSHOT
[INFO] \- ch.qos.logback:logback-classic:jar:1.2.3:compile
[INFO]    +- ch.qos.logback:logback-core:jar:1.2.3:compile
[INFO]    \- org.slf4j:slf4j-api:jar:1.7.25:compile
[INFO] ------------------------------------------------------------------------

然后,在需要打印日志的类中获取Logger实例并使用其方法打印日志至输出目的地:

package red.var.logback.test;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.util.StatusPrinter;

public class HelloWorld {

	public static void main(String[] args) {
		Logger logger = LoggerFactory.getLogger("red.var.logback.test.HelloWorld");
		logger.debug("Hi,Logback!");
		
		LoggerContext loggerContext = (LoggerContext)LoggerFactory.getILoggerFactory();
		StatusPrinter.print(loggerContext);
	}

}

执行main方法,可见控制台打印出如下日志:

09:15:36.511 [main] DEBUG red.var.logback.test.HelloWorld - Hi,Logback!
09:15:36,464 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
09:15:36,464 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
09:15:36,464 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
09:15:36,464 |-INFO in ch.qos.logback.classic.BasicConfigurator@179d3b25 - Setting up default configuration.

(2)小结

  • ①简单使用logback打印日志的时候,只感知到使用slf4j。
  • ②使用StatusPrinter的print方法可以打印出logback内部状态信息,这个使用方法很重要,在碰到与logback有关的问题时,打印logback内部状态信息会很利于问题的诊断。例子中可以看到,在打印出“Hi,Logback!”之前,logback尝试去寻找配置文件,但是没找到于是最后采用了自己的BasicConfigurator来作为默认配置。

猜你喜欢

转载自blog.csdn.net/chenxushare/article/details/82988587