第一章节搭建了logback日志框架的环境,演示了Hello World的示例,并详细分析了示例。

  搭建日志框架的过程非常简单,只需要在项目的classpath上添加以下三个jar包,logback-core,logback-classic,slf4j-api-xx.jar。其中logback-classic依赖core和slf4j,如果使用maven构建,只需要添加classic依赖即可。

1、HelloWorld示例

import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.util.StatusPrinter; /**
*
* @File Name: HelloWorld.java
* @Description: 学习logback的第一个程序,要运行此代码需要将logback-classic,logback-core,slf4j-api-xx.jar引入到classpath。
* @version 1.0
* @since JDK 1.8
*/
public class HelloWorld {
public static void main(String[] args) {
// 工厂模式,通过getLogger方法获取Logger对象,它的全名为org.slf4j.Logger
// 工厂方法的参数可以是类全名,也可以是其对应的Class类
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
// 定义了一条logging statement,它的level为debug,它的message为"Hello World"
logger.debug("Hello World");
// 获取日志框架的上下文,它等同于applicationContext在spring框架中的地位
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
// 打印出日志框架运行的详细日志,也可以理解为分析LoggerContext对象的生命周期。
StatusPrinter.print(context);
}

  上述代码的运行结果如下:

17:04:25.470 [main] DEBUG learn.logback.chapter1.HelloWorld - Hello World
17:04:25,441 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
17:04:25,441 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
17:04:25,441 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
17:04:25,442 |-INFO in ch.qos.logback.classic.BasicConfigurator@31221be2 - Setting up default configuration.

  Logback在运行时总共经历了4步:

  1. 它首先去查找classpath路径下的logback-test.xml配置文件。
  2. 查找失败之后,继续查找logback.groovy配置文件。
  3. 如果还失败,继续查找logback.xml配置文件。
  4. 如果上述三个文件都没有找到,使用默认的配置。最后的日志也显示它是BasicConfigurator类

2、 BasicConfigurator(默认配置)

  这个类继承ContextAwareBase类,并实现Configurator接口,只有一个默认的构造器和configure方法,代码如下:

public void configure(LoggerContext lc) {
// 没有实际意义,打印日志
addInfo("Setting up default configuration."); // 添加默认的配置的Appender,ConsoleAppender,并设置默认的Encoder
ConsoleAppender<ILoggingEvent> ca = new ConsoleAppender<ILoggingEvent>();
ca.setContext(lc);
ca.setName("console");
LayoutWrappingEncoder<ILoggingEvent> encoder = new LayoutWrappingEncoder<ILoggingEvent>();
encoder.setContext(lc); // same as
// PatternLayout layout = new PatternLayout();
// layout.setPattern("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n");
TTLLLayout layout = new TTLLLayout(); layout.setContext(lc);
layout.start();
encoder.setLayout(layout); ca.setEncoder(encoder);
ca.start();
// 添加默认的根Logger,之后会学习到logger的逻辑结构为树形结构,树的跟为Logger.ROOT_LOGGER_NAME,这个常量的值为root,所有logger从根logger中继承Appender
Logger rootLogger = lc.getLogger(Logger.ROOT_LOGGER_NAME);
rootLogger.addAppender(ca);
}

  这段代码做了两件事:

  1. 设置默认的Appender为ConsoleAppender,由于Appender类依赖Layout,所以依赖的layout对象也被创建。
  2. 创建了root的logger对象,并设置Logger对象的Appender为consoleAppender。

  至此本篇内容结束,原著的链接是:http://logback.qos.ch/manual/introduction.html

后端——框架——日志框架——logback——《官网》阅读笔记——第一章节的更多相关文章

  1. Spark SQL官网阅读笔记

    Spark SQL是Spark中用于结构化数据处理的组件. Spark SQL可以从Hive中读取数据. 执行结果是Dataset/DataFrame. DataFrame是一个分布式数据容器.然而D ...

  2. Spring官网阅读(十八)Spring中的AOP

    文章目录 什么是AOP AOP中的核心概念 切面 连接点 通知 切点 引入 目标对象 代理对象 织入 Spring中如何使用AOP 1.开启AOP 2.申明切面 3.申明切点 切点表达式 excecu ...

  3. Spring官网阅读 | 总结篇

    接近用了4个多月的时间,完成了整个<Spring官网阅读>系列的文章,本文主要对本系列所有的文章做一个总结,同时也将所有的目录汇总成一篇文章方便各位读者来阅读. 下面这张图是我整个的写作大 ...

  4. Spring官网阅读(十六)Spring中的数据绑定

    文章目录 DataBinder UML类图 使用示例 源码分析 bind方法 doBind方法 applyPropertyValues方法 获取一个属性访问器 通过属性访问器直接set属性值 1.se ...

  5. Spring官网阅读(十七)Spring中的数据校验

    文章目录 Java中的数据校验 Bean Validation(JSR 380) 使用示例 Spring对Bean Validation的支持 Spring中的Validator 接口定义 UML类图 ...

  6. Spring官网阅读(三)自动注入

    上篇文章我们已经学习了1.4小结中关于依赖注入跟方法注入的内容.这篇文章我们继续学习这结中的其他内容,顺便解决下我们上篇文章留下来的一个问题-----注入模型. 文章目录 前言: 自动注入: 自动注入 ...

  7. layui前端框架实例(修复官网数据接口异常问题)

    layui前端框架实例,官网的实例会提示数据接口异常,已修复. 主要是修改数据表格,做一个可以用的实例,可以选中,编辑,删除等. gitee地址:https://gitee.com/pingg2019 ...

  8. 学习phalcon框架按照官网手册搭建第一个项目注册功能

    中文手册官网:http://phalcon.ipanta.com/1.3/tutorial.html#bootstrap 官网提供http://www.tutorial.com项目源码github地址 ...

  9. Spring官网阅读(九)Spring中Bean的生命周期(上)

    文章目录 生命周期回调 1.Bean初始化回调 2.Bean销毁回调 3.配置默认的初始化及销毁方法 4.执行顺序 5.容器启动或停止回调 Lifecycle 接口 LifecycleProcesso ...

随机推荐

  1. win10配置jdk环境变量

    备注:这里以jdk-10.0.2_windows-x64_bin为例 1.jdk安装目录如下 2.右键“此电脑”-点击“属性”-点击“高级系统设置”-点击“环境变量”-选中“Path”-点击“编辑” ...

  2. 【PHP】使用PHP抓取Bing每日图像并为己所用

    Bing搜索的首页每天都会推送一张很漂亮的图片,把它保存下来,当做电脑桌面或是自己的网站背景图还不是美滋滋…… 今天的bing图片是这样的 既然要抓取这张图片,首先就得弄清这张图是从何而来的.经过对必 ...

  3. LayIM聊天框全屏根据浏览器高宽自适应

    个人博客 地址:http://www.wenhaofan.com/article/20190410190628 问题 由于LayIM没有处理聊天框在全屏状态下根据浏览器缩放处理高宽,所以会导致在浏览器 ...

  4. 基于EFCore3.0+Dapper 封装Repository

    Wei.Repository 基于EFCore3.0+Dapper 封装Repository,实现UnitOfWork,提供基本的CURD操作,可直接注入泛型Repository,也可以继承Repos ...

  5. Winfom递归绑定树节点

    /// <summary> /// 绑定树节点 /// </summary> /// <param name="pid"></param& ...

  6. Windows Live Writer 2012 安装配置

    Windows Live Writer 2012用起来比较舒服,可以直接编辑 在线博客文章 下载地址 http://g.live.com/1rewlive5-all/zh-cn/wlsetup-all ...

  7. 在java中调用mockjs生成模拟数据

    一.手写版 在前端有个模拟数据的神器 Mock.js 能生成随机数据,拦截 Ajax 请求,然后我觉得他的这个生成随机数据不错.然后我就到度娘一顿操作,没找到类似的java实现,于是就有了下面的代码: ...

  8. pymysql 连接池

    pymysql连接池 import pymysql from DBUtils.PooledDB import PooledDB, SharedDBConnection ''' 连接池 ''' clas ...

  9. Selenium3+python自动化011-unittest生成测试报告(HTMLTestRunner)

    批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLTest ...

  10. C++——标准模板库

    1.泛型程序设计:将程序尽可能写的通用,将算法从特定的数据结构中抽象出来,成为通用的:C++模板为泛型程序设计奠定了关键的基础:STL是泛型程序设计的一个范例:容器container.迭代器itera ...