《手把手教你》系列基础篇(八十九)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-上篇(详解教程)
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 分为三个模块: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的默认实现类是ch.qos.logback.classic.encoder.PatternLayoutEncoder --> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern> </encoder> </appender> <!-- name值可以是包名或具体的类名:该包(包括子包)下的类或该类将采用此logger --> <logger name="testSuites.TestLogback" level="INFO"> <appender-ref ref="STDOUT" /> </logger> <!-- root的默认level是DEBUG --> <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版本需一致。
好了,时间也不早了,今天就分享和讲解到这里,希望对您有所帮助,感谢您耐心地阅读!
感谢您花时间阅读此篇文章,如果您觉得这篇文章你学到了东西也是为了犒劳下博主的码字不易不妨打赏一下吧,让博主能喝上一杯咖啡,在此谢过了!
如果您觉得阅读本文对您有帮助,请点一下左下角“推荐”按钮,您的
本文版权归作者和博客园共有,来源网址:https://www.cnblogs.com/du-hong 欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利!
公众号(关注宏哥)                                                                                 客服微信