logback详解及入门案例(2)
导读:logback详解及入门案例,logback的日志输出等级分为:TRACE, DEBUG, INFO, WARN, ERROR。 如果一个给定的logger没有指定一个日志输出等级,那么它就会继承离它最近的一个祖先的层级。 为
logback详解及入门案例
logback的日志输出等级分为:TRACE, DEBUG, INFO, WARN, ERROR。
如果一个给定的logger没有指定一个日志输出等级,那么它就会继承离它最近的一个祖先的层级。
为了确保所有的logger都有一个日志输出等级,root logger会有一个默认输出等级 — DEBUG。
1.4 logback初始化步骤
- logback会在类路径下寻找名为logback-test.xml的文件
- 如果没有找到,logback会继续寻找名为logback.groovy的文件
- 如果没有找到,logback会继续寻找名为logback.xml的文件
- 如果没有找到,将会在类路径下寻找文件META-INFO/services/ch.qos.logback.classic.spi.Configurator,该文件的内容为实现了Configurator接口的实现类的全限定类名
- 如果以上都没有成功,logback会通过BasicConfigurator为自己进行配置,并且日志将会全部在控制台打印出来
最后一步的目的是为了保证在所有的配置文件都没有被找到的情况下,提供一个默认的配置。
2. logback入门案例
2.1. 案例一
本案例是一个logback简单应用,并且不提供配置文件而使用其提供的默认配置。
第一步:创建maven工程logback-demo并配置pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<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>com.zbbmeta</groupId>
<artifactId>logback-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
第二步:编写单元测试
package com.zbbmeta.logback;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.util.StatusPrinter;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 测试logback日志组件的使用
*/
public class LogbackTest {
//简单使用
@Test
public void test1(){
//通过工厂对象获得一个logger日志记录器对象
Logger logger = LoggerFactory.getLogger("com.zbbmeta.test");
//当前logger对象的日志输出级别为debug,从root logger继承来的
//使用trace级别记录日志
logger.trace("trace...");
logger.debug("debug...");
logger.info("info...");
logger.warn("warn...");
logger.error("error...");
}
//打印日志内部状态
@Test
public void test2(){
//通过工厂对象获得一个logger日志记录器对象
Logger logger = LoggerFactory.getLogger("com.zbbmeta.test");
//当前logger对象的日志输出级别为debug,从root logger继承来的
//使用trace级别记录日志
logger.trace("trace...");
logger.debug("debug...");
logger.info("info...");
logger.warn("warn...");
logger.error("error...");
// 打印内部的状态
LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory();
StatusPrinter.print(lc);
// 说明找文件步骤-->logback-test.xml-->logback.xml-->configuration
/* |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
|-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
|-INFO in ch.qos.logback.classic.BasicConfigurator@691a7f8f - Setting up default configuration.*/
}
/*
* 日志输出级别:ERROR > WARN > INFO > DEBUG > TRACE
* */
//测试默认的日志输出级别
@Test
public void test3(){
Logger logger = LoggerFactory.getLogger("com.zbbmeta.logback.HelloWorld");
logger.error("error ...");
logger.warn("warn ...");
logger.info("info ...");
logger.debug("debug ...");
//因为默认的输出级别为debug,所以这一条日志不会输出
logger.trace("trace ...");
}
//设置日志输出等级
@Test
public void test4(){
ch.qos.logback.classic.Logger logger = (ch.qos.logback.classic.Logger)LoggerFactory.getLogger("com.zbbmeta.logback.HelloWorld");
logger.setLevel(Level.DEBUG);//设置当前日志记录器对象的日志输出级别
logger.error("error ...");
logger.warn("warn ...");
logger.info("info ...");
logger.debug("debug ...");
//因为默认的输出级别为debug,所以这一条日志不会输出
logger.trace("trace ...");
}
//测试Logger的继承
@Test
public void test5(){
ch.qos.logback.classic.Logger logger = (ch.qos.logback.classic.Logger)LoggerFactory.getLogger("com.zbbmeta");
logger.setLevel(Level.TRACE);//设置当前日志记录器对象的日志输出级别
//当前记录器对象是上面记录器对象的子级,从父级继承输出等级---INFO
Logger logger1 = LoggerFactory.getLogger("com.zbbmeta.test");
logger1.error("error ...");
logger1.warn("warn ...");
logger1.info("info ...");
logger1.debug("debug ...");
logger1.trace("trace ...");
}
//Logger获取,根据同一个名称获得的logger都是同一个实例
@Test
public void test6(){
Logger logger1 = LoggerFactory.getLogger("com.zbbmeta.test");
Logger logger2 = LoggerFactory.getLogger("com.zbbmeta.test");
System.out.println(logger1 == logger2);
}
//参数化日志
@Test
public void test7(){
Logger logger = LoggerFactory.getLogger("com.zbbmeta");
String value = "world";
logger.info("参数值为:" + value);
logger.debug("hello {}","world");
}
}
相关阅读
-
网站最新域名ip查询接口是什么 域名服务器ip地址查询方法
如果想了解网站最新域名ip查询接口是什么和域名服务器ip地址查询方法的相关介绍,相关内容具体如下: 我们访问网站一般是通过域名的,比如访问头条,你会在浏览器中输入toutiao.com,而不
-
IIS是什么意思 Web服务器iis有什么用
对于普通网民来说,大多数都不知道 IIS是什么意思? 很多人都是只见其名,不明含义,那么 IIS有什么用 呢?下面IT袋小编就给大家讲解下 IIS的英文全称和中文含义 ,以及给大家介绍 IIS的主
-
网站建设与维护是干什么的 建设网站的基本流程
本文为你详解网站建设与维护是干什么的和建设网站的基本流程方面的介绍,一定能解决您的问题的,一起来了解吧! 网站维护是一个网站后期的工作主要内容和核心部分。 1、服务器软件维
-
网络域名申请条件 域名注册流程和费用
你是不是想知道网络域名申请条件和域名注册流程和费用方面的内容,下面为详细的介绍。 在这之前北极星IT袋网小编已经写过一篇(域名注册流程)的文章,需要的朋友可以去看看,域名和


