《手把手教你》系列基础篇(八十九)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-上篇(详解教程)

简介: 【7月更文挑战第7天】Apache Log4j2的安全漏洞促使考虑使用logback作为替代的日志框架。Logback由log4j创始人设计,提供更好的性能,更低的内存使用,并且能够自动重载配置文件。它分为logback-core、logback-classic(实现了SLF4J API)和logback-access(用于Servlet容器集成)三个模块。配置涉及Logger、Appender(定义日志输出目的地)和Layout(格式化日志)。

1.简介

今天讲解和分享这篇文章主要是由于log4j2前段时间新闻发现 Apache Log4j2 近日被公开的远程代码执行漏洞在全球引起了重大影响:https://www.oschina.net/news/172999,因此可以用logback日志框架替换一下。slf4j是Java的简单日志门面API,很多日志实现都可以与之集成,如JDK logging (java.util.logging), log4j和logback。优点是代码里不会有具体的日志实现类,减少侵入。与log4j相比,logback具有一些优势,如更好的性能、更少的内存使用、自动重加载配置文件以及过滤功能等。

2.Logback简介

Logback 是由 log4j 创始人设计的又一个开源日志组件,作为流行的 log4j 项目的后续版本,从而替代 log4j。

logback一个开源日志组件

logback性能是log4j性能的10倍以上

logback的配置,需要配置输出源appender,打日志的loger(子节点)和root(根节点),实际上,它输出日志是从子节点开始,子节点如果有输出源直接输入,如果无,判断配置的addtivity,是否像上级传递,即是否向root传递,传递则采用root的输出源,否则不输出日志。

Logback 的体系结构足够通用,以便在不同情况下应用。 目前,logback 分为三个模块:logback-core,logback-classic和logback-access。

logback-core:模块为其他两个模块的基础。

logback-classic:模块可以被看做是log4j的改进版本。此外,logback-classic 本身实现了 SLF4J API,因此可以在 logback 和其他日志框架(如 log4j 或 java.util.logging(JUL))之间来回切换。

logback-access:模块与 Servlet 容器(如 Tomcat 和 Jetty)集成,以提供 HTTP 访问日志功能。

3.配置文件

Logger:日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型、级别。

Appender:主要用于指定日志输出的目的地,目的地可以是控制台、文件、远程套接字服务器、 MySQL、PostreSQL、 Oracle和其他数据库、 JMS和远程UNIX Syslog守护进程等。

Layout 负责把事件转换成字符串,格式化的日志信息的输出。

4.准备演示环境

4.1准备工作

1.下载logback的jar包地址:https://logback.qos.ch/download.html 宏哥可以通过下载地址下载版本是1.2.9。如下图所示:

(1)logback-access-1.1.9.jar

(2)logback-classic-1.1.9.jar

(3)logback-core-1.1.9.jar

2.下载slf4j-api的jar包地址:https://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.25/ 宏哥可以通过下载地址下载版本是1.7.25。如下图所示:

3.下载好了之后,将jar包添加到Eclipse项目中去。如下图所示:

4.在当前项目新建一个logback.xml的文件,如下图所示:

5.项目实战

5.1日志输出到控制台

1.新建logback.xml或logback-test.xml(优先级高)文件中添加如下图所示内容:

2.logback.xml参考代码

xml version="1.0" encoding="UTF-8"?>  

 

<configuration>  

   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  

         

       <encoder>  

           <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%npattern>  

       encoder>  

   appender>  

 

     

   <logger name="testSuites.TestLogback" level="INFO">  

       <appender-ref ref="STDOUT" />  

   logger>  

     

     

   <root level="DEBUG">  

       <appender-ref ref="STDOUT" />  

   root>  

configuration>

3.新建一个测试类:TestLogback,测试日志输出到控制台。

5.2代码设计

5.3参考代码

package testSuites;


import org.slf4j.LoggerFactory;

import ch.qos.logback.classic.Logger;


/**

* @author 北京-宏哥

*

* @公众号:北京宏哥

*

* 《手把手教你》系列基础篇(八十九)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出(详解教程)

*

* 2022年3月26日

*/


public class TestLogback {

   

   private static final Logger log = (Logger) LoggerFactory.getLogger(TestLogback.class);  

   

   public void reconciliate() {  

       String name = "conciliate";  

       log.info("Hello from reconciliate");  

       log.debug("My name is {}", name);  

   }

   public static void main(String[] args) {

       

       TestLogback t = new  TestLogback();

       t.reconciliate();

   }

}

5.4运行代码

1.运行代码,右键Run AS->Java Appliance,控制台输出,如下图所示:

从上图可以看出控制台中的reconciliate中的日志会打印两次,这是因为所有logger的始祖是ROOT,默认会继承ROOT的配置。

解决:logger的additivity属性设置为false

2.修改后运行代码,右键Run AS->Java Appliance,控制台输出,如下图所示:

从上图可以看出控制台中的reconciliate中的日志打印了一次,问题解决了。

6.小结

下载的logback各类jar版本需一致。

 好了,时间也不早了,今天就分享和讲解到这里,希望对您有所帮助,感谢您耐心地阅读!



每天学习一点,今后必成大神-

往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问):


Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
4月前
|
Java 关系型数据库 数据库
Java 项目实战教程从基础到进阶实战案例分析详解
本文介绍了多个Java项目实战案例,涵盖企业级管理系统、电商平台、在线书店及新手小项目,结合Spring Boot、Spring Cloud、MyBatis等主流技术,通过实际应用场景帮助开发者掌握Java项目开发的核心技能,适合从基础到进阶的学习与实践。
666 3
|
3月前
|
安全 Java
Java之泛型使用教程
Java之泛型使用教程
306 10
|
2月前
|
Oracle Java 关系型数据库
Java 简单教程
Java是跨平台、面向对象的编程语言,广泛用于企业开发、Android应用等。本教程涵盖环境搭建、基础语法、流程控制、面向对象、集合与异常处理,助你快速入门并编写简单程序,为进一步深入学习打下坚实基础。
357 0
|
5月前
|
缓存 安全 Java
Java 并发新特性实战教程之核心特性详解与项目实战
本教程深入解析Java 8至Java 19并发编程新特性,涵盖CompletableFuture异步编程、StampedLock读写锁、Flow API响应式流、VarHandle内存访问及结构化并发等核心技术。结合电商订单处理、缓存系统、实时数据流、高性能计数器与用户资料聚合等实战案例,帮助开发者高效构建高并发、低延迟、易维护的Java应用。适合中高级Java开发者提升并发编程能力。
182 0
|
2月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
3月前
|
运维 Linux 网络安全
自动化真能省钱?聊聊运维自动化如何帮企业优化IT成本
自动化真能省钱?聊聊运维自动化如何帮企业优化IT成本
141 4
|
5月前
|
运维 监控 安全
从实践到自动化:现代运维管理的转型与挑战
本文探讨了现代运维管理从传统人工模式向自动化转型的必要性与路径,分析了传统运维的痛点,如效率低、响应慢、依赖经验等问题,并介绍了自动化运维在提升效率、降低成本、增强系统稳定性与安全性方面的优势。结合技术工具与实践案例,文章展示了企业如何通过自动化实现运维升级,推动数字化转型,提升业务竞争力。
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
302 4
|
9月前
|
机器学习/深度学习 人工智能 运维
机器学习+自动化运维:让服务器自己修Bug,运维变轻松!
机器学习+自动化运维:让服务器自己修Bug,运维变轻松!
409 14