Selenium——使用Log4j2打印执行日志浅析

Log4j2介绍

  1. Log4j是Apache的一个开放源代码项目,是一个 日志操作包 。通过使用Log4j,可以指定日志信息输出的目的地,控制每一条日志的输出格式,定义日志信息的级别。所有这功能通过一个配置文件灵活进行配置。

环境准备

  1. 下载zip文件,并解压。 下载链接

  2. 把解压后的 log4j-api-2.17.2.jar log4j-core-2.17.2.jar 两个文件,添加到eclipse的buildpath中(可以先建一个libs文件,把这两个文件复制粘贴到该文件夹,并右键build path),效果如图显示:
    在这里插入图片描述

功能介绍

xml文件基本内容

默认从error级别开始打印,例如:

package cmo.xhx.demo;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.testng.annotations.Test;

public class Demo1 {
	private static final Logger LOG = LogManager.getLogger();
	String msg = "-----hello";

	@Test
	public void test1() {
		LOG.trace("trace" + msg); // 最低级别,通常不会使用
		LOG.debug("debug" + msg);// 开发环境上用
		LOG.info("info" + msg);// 线上、生产环境上用
		LOG.warn("warn" + msg);
		LOG.error("error" + msg);
		LOG.fatal("fatal" + msg); // 最高级别

	}
}

在这里插入图片描述

留下一个链接,上面有更多log4j的资料
https://github.com/apache/logging-log4j2/blob/release-2.x/README.md

我们在src下建一个xml文件,文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
  <Appenders>
    <Console name="Console" target="SYSTEM_ERROR">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Logger name="cmo.xhx.demo" level="INFO"/>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

PatternLayout 中可设置相应的输出格式。
console中的 name应与 AppenderRef 中的一致。
Logger 中的level值对应从哪一级别开始打印(此文件为从info开始打印)。name值为对应的包名。
效果如下:
在这里插入图片描述

注意

  1. 格式相关信息:(1)%d:打印日志的年月日时分毫秒信息,(2)%c打印类的名称(%level也可), (3)%M:发出日志请求的方法名, (4)%m打印具体的日志信息, (5)%n:输出一个回车换行符。(6)%-5p(左对齐)表示日志的级别,输出优先级( ALL、TRACE、BEGUB、INFO、WARN、ERROR、FATAL、OFF(从低到高级别)
  2. <Logger> 的优先级大于 Root 的,当没有Logger标签时,默认从root中设计的优先级开始打印。
  3. 例如:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
  <Appenders>
    <Console name="Console" target="SYSTEM_ERROR">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    
    <Root level="trace">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

效果如下:
在这里插入图片描述

指定将结果存到一个文件中:
xml文件内容修改为:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
	<Appenders>
		<Console name="Console" target="SYSTEM_ERROR">
			<PatternLayout
				pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
		</Console>

		<File name="file" fileName="log/mylog">
			<PatternLayout pattern="%d [-%5p] %c - %m%n" />
		</File>
	</Appenders>
	<Loggers>
		<Root level="all">
			<AppenderRef ref="Console" />
			<AppenderRef ref="file" />
		</Root>
	</Loggers>
</Configuration>

添加了 <File>、<AppenderRef> ,修改了格式。效果如下图:
刷新一下,发现多了一个log文件夹,并且其中的一个mylog文件内容如下图所示:
在这里插入图片描述

和selenium结合使用

在此仅仅浅浅介绍一下。
在这里插入图片描述
如图所示,建立一个conf文件,并在其中建立一个 .properties 文件,其中可以写用到的一些基本数据,如浏览器驱动所在位置,保存截屏的地址等等。
在这里插入图片描述
建立一个java文件,用来获取上述文件中的信息。
那么对应的初始化浏览器的java文件,直接通过另一个java类便可获取到信息,完成初始化操作。

提示:静态方法在类实例化之前就可以使用
例如: String browserType = ReadProperties.getValue("browser");


版权声明:本文为m0_51508220原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。