设计模式 笔记5 | 工厂方法模式 在源码中的应用 | logback 日志管理框架含义、架构以及配置 | logback 使用案例 | logback中存在的工厂方法模式和单例模式 |

一、logback 简介

官方文档:https://logback.qos.ch/manual/

logback 是 继log4j(日志管理框架)推出后的升级版,由 log4j 的创始人 Ceki Gülcü 先生设计。

log back 相比于 log4j (官方文档指的是log4j 1.x 版本)的优势有(部分):【具体请参考官方说明:https://logback.qos.ch/reasonsToSwitch.html

  1. 运行速度更快,内存占用更小
  2. logback-classic 组件实现了 SLF4J 原生的 API,所以 logback 可以用来替换使用 SLF4J 的项目
  3. 若更新了配置文件,logback-classic 可以自动快速地重新加载配置文件, 可动态扩展到每秒百万次的调用,分布在数百个线程上,不涉及创建单独的扫描线程
  4. 提供 I / O 故障恢复机制,若文件服务器出现故障,则无需重启应用程序来恢复记录,当文件服务器恢复正常时,相关的 logback appender 会快速地从之前的故障状态中恢复(由LogbackFileAppender及其所有子类,包括RollingFileAppender实现)
  5. 自动删除旧的日志记录,可控制日志记录文件的最大数量以及最长保存时间,通过设置TimeBasedRollingPolicySizeAndTimeBasedFNATP的maxHistory属性,默认时间单位是月

官方版本说明: https://logback.qos.ch/news.html

  • Logback 官方于2021-08-10 发布 1.3.0-alpha7 版本 ,支持 Java8,Jetty 9.4.9 和 Tomcat 9.0.50
  • 截止 2022 / 07/ 21,最新的稳定 logback 版本是 1.2.11,支持 Java 8
  • 官方 Maven 的仓库 groupId 为 ch.qos.logback

logback 支持的日志级别与说明

级别 描述
TRACE 在线调试,默认情况下,该级别日志既不打印到终端,也不输出到文件
DEBUG 终端查看,调试,默认情况下输出到终端,但不会归档到日志文件
INFO 记录程序进度和状态信息
WARN 警告信息
ERROR 状态错误,该错误发生后,程序仍可以运行

日志级别:ERROR > WARN> INFO > DEBUG > TRACE

二、logback 架构


参考资料:https://logback.qos.ch/manual/architecture.html
主要模块:logback主要分成三大模块,分别是:

  • logback-core,框架的核心,其他两个模块依赖此模块
  • logback-classic,log4j优化版本,原生实现了 slf4j
  • logback-access,可集成到现有的 Servlet 容器,如 Tomcat 和 Jetty

注:我们可以基于 logback-core 自定义模块

2.1 logback 中主要的三个接口

logback主要支持三个接口:Logger、Appender 和 Layout,这三种类型的组件协同工作,使开发人员能根据消息类型和级别记录消息,并在运行时控制这些消息的格式和报告位置

接口 Logger 是 logback-classic 中的一部分,而 Appender 和 Layout 这两个接口是 logback-core的一部分,作为通用模块,logback-core里没有 Logger

2.2 Logger Context

任何一个日志 API 都比原始的控制台打印 System.out.println更有优势,因为能禁用指定的日志语句,同时也允许其他日志语句不受影响地打印到控制台或文件,即支持多线程操作。

logback-classic模块中,这种分类是 loggers里的一部分,
LoggerContext 支持生成多个 logger,并存储到内部的一种树形结构中,每个独立的 logger 都需连接到 LoggerContext。

不同的 logger 具有不同的名称,而且是区分大小写的,通过符号点来区分父级和子级,比如
名为 com.unicom.uni.Logger的父级。

LoggerContext 中存在一个 root logger,其特点是位于 logger 树形层次结构的顶部,其他的logger都是 root logger的子节点,我们可通过 getLogger 方法获取

// final static String ROOT_LOGGER_NAME = "ROOT";
Logger rootLogger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);

Logger 接口的常用方法:

package org.slf4j; 
public interface Logger {
   

  // Printing methods: 
  public void trace(String message);
  public void debug(String message);
  public void info(String message); 
  public void warn(String message); 
  public void error(String message); 
}

2.3 Logback中的日志级别

官方文档:https://logback.qos.ch/manual/architecture.html
logback中的日志级别又称级别继承(Level Inheritance)
之前提到的日志级别均在 logback的 logback-classic模块中的 ch.qos.logback.classic.Level 内定义

package ch.qos.logback.classic;

import java.io.Serializable;

public final class Level implements Serializable {
    
    public static final Level OFF = new Level(2147483647, "OFF");
    public static final Level ERROR = new Level(40000, "ERROR");
    public static final Level WARN = new Level(30000, "WARN");
    public static final Level INFO = new Level(20000, "INFO");
    public static final Level DEBUG = new Level(10000, "DEBUG");
    public static final Level TRACE = new Level(5000, "TR
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值