Selenium 中的 Log4j:如何下载和使用 Log4j 属性文件
Selenium 中的 Log4j 是什么?
Log4j 是一个快速、灵活、可靠的日志框架(API),于 1996 年初用 Java 编写。它以 Apache 软件许可证分发。Log4J 已被移植到 C、C++、C#、Perl、Python、Ruby 和 Eiffel 语言。它是一个用于中小型 Selenium 自动化项目的工具。
为什么要使用 Log4j?
- 它是开源的
- 使用 Log4j,可以将 Selenium 自动化的流程详情存储到文件或数据库中
- Log4j 适用于大型和小型项目
- 在 Log4j 中,我们在代码中使用日志语句而不是 SOPL 语句,以了解项目在执行时的状态
Log4j 组件
记录器
它负责记录信息。要在项目中实现记录器,需要执行以下步骤
为 logger 类创建实例
Logger 类是一个基于 Java 的实用程序,它已经实现了所有通用方法来使用 log4j
定义 Log4j 级别
主要有五种日志级别
- All – 此日志级别将记录所有内容(它打开所有日志)
- DEBUG – 打印调试信息,在开发阶段很有用
- INFO – 打印突出应用程序进度的信息性消息
- WARN – 打印有关错误和意外系统行为的信息。
- ERROR – 打印可能允许系统继续运行的错误消息
- FATAL – 打印导致应用程序崩溃的系统关键信息
- OFF – 不记录
附加器
它用于将 LogEvents 传递到其目的地。它决定日志信息将如何处理。简单来说,它用于将日志写入文件。以下是一些附加器类型
- ConsoleAppender 将日志输出到标准输出
- File appender 将日志打印到某个文件
- Rolling file appender 将日志输出到具有最大大小的文件
注意:在 log4j 属性中,我们可以用任何名称调用附加器。还有其他附加器,但我们将仅限于这些。
布局
它负责以不同样式格式化日志信息。
Logger 类提供不同的方法来处理日志活动。它提供了两个静态方法来获取 Logger 对象。
Public static Logger getRootLogger() Public static Logger getLogger(String name)
Log4j 如何配置?
要配置 log4j,我们必须决定要实现哪个附加器。因此,将设置附加器的参数。
- 我们将使用 DEBUG 级别和 RollingFileAppender
- 我们将进行两个配置或日志,
- 第一:根记录器,它将所有系统生成的日志写入名为 Selenium.logs 的文件
- 第二:将代码中手动命令生成的信息写入文件 - Manual.logs
#根记录器
log4j.rootLogger=DEBUG,file log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=D:\\Guru99\\src\\Selenium.logs log4j.appender.file.maxFileSize=900KB log4j.appender.file.maxBackupIndex=5 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c<strong>{1}</strong>:%L - %m%n log4j.appender.file.Append=false
#应用程序日志
log4j.logger.devpinoyLogger=DEBUG, dest1 log4j.appender.dest1=org.apache.log4j.RollingFileAppender log4j.appender.dest1.maxFileSize=900KB log4j.appender.dest1.maxBackupIndex=6 log4j.appender.dest1.layout=org.apache.log4j.PatternLayout log4j.appender.dest1.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} %c %m%n log4j.appender.dest1.File=D:\\ Guru99\\src\\Manual.logs log4j.appender.dest1.Append=false
在上面的示例中,我们配置了 log4j 将日志记录到两个不同的文件,名为 Selenium.log 和 Manual.log。
- file 和 dest1 是两个标识符。
- “File”用于指定将保存日志的文件名
- “maxFileSize”用于配置日志文件的最大大小。当文件达到此大小时,将创建一个同名的新文件,并将旧文件名添加为索引。
- “maxBackupIndex”用于配置最大备份文件数。
- “layout”用于设置日志文件的格式。
- “Append”用于设置追加功能。如果设置为 false,则每次都会创建一个新文件,而不是使用旧文件进行日志记录
Log4j 如何在脚本中使用?
在代码中,我们使用“log”作为引用变量,引用 Logger 类的 getLogger 方法
Logger log = Logger.getLogger("devpinoyLogger");
使用“log”引用变量和 debug 方法来记录我们想要的信息。
log.debug("--information--");
什么是 LogExpert 工具?
- LogExpert 工具是为 Windows 开发的用于跟踪日志的工具
- 它是一个免费开源的日志查看器。
- 它是一个具有搜索、过滤、书签和突出显示日志等多种功能的日志分析工具
- 在此工具中,日志文件打开后会自动更新
- 在此工具中,我们可以在不同的选项卡中打开多个日志文件
- 我们还可以对书签进行评论,并且有快捷键可以在不同的书签之间导航。我们还可以查看完整的书签列表并从那里导航
- 工具的快捷方式在帮助文件中给出,以便可以参考该工具。
如何在 Selenium 中使用 Log4j
步骤 1) 在 Eclipse 中创建一个名为 log4j_demo 的新项目
步骤 2) 右键单击 src -> 构建路径 -> 配置构建路径
步骤 3) 单击 Libraries 并添加 Log4J 库。您可以从 https://logging.apache.ac.cn/log4j/1.2/download.html 下载
步骤 4) 创建一个新文件。此文件将包含所有 log4j 配置
- 右键单击 src -> 新建 -> 其他 -> 通用 -> 文件
- 将文件名命名为“log4j.properties”
- 单击完成
创建另外两个文件,并将它们命名为 Selenium.logs 和 Manual.logs。这些文件将包含系统创建的所有日志和手动记录的语句
步骤 5) 在 log4j.properties 中复制所有配置。
步骤 6) 创建主类
- 右键单击默认包 -> 新建 -> 类
- 输入类名并单击完成
步骤 7) 将以下代码复制到主类中
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.apache.log4j.Logger; public class LoggingDemo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub WebDriver driver = new FirefoxDriver(); Logger log = Logger.getLogger("devpinoyLogger"); driver.get("https://healthunify.com/bmicalculator/"); log.debug("opening webiste"); driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); log.debug("entring weight"); driver.findElement(By.name("wg")).sendKeys("87"); log.debug("selecting kilograms"); driver.findElement(By.name("opt1")).sendKeys("kilograms"); log.debug("selecting height in feet"); driver.findElement(By.name("opt2")).sendKeys("5"); log.debug("selecting height in inchs"); driver.findElement(By.name("opt3")).sendKeys("10"); log.debug("Clicking on calculate"); driver.findElement(By.name("cc")).click(); log.debug("Getting SIUnit value"); String SIUnit = driver.findElement(By.name("si")).getAttribute("value"); log.debug("Getting USUnit value"); String USUnit = driver.findElement(By.name("us")).getAttribute("value"); log.debug("Getting UKUnit value"); String UKUnit = driver.findElement(By.name("uk")).getAttribute("value"); log.debug("Getting overall description"); String note = driver.findElement(By.name("desc")).getAttribute("value"); System.out.println("SIUnit = " + SIUnit); System.out.println("USUnit = " + USUnit); System.out.println("UKUnit = " + UKUnit); System.out.println("note = " + note); driver.quit(); } }
在上述代码中,我们访问 https://healthunify.com/bmicalculator/ 并验证 BMI 计算器。输入的体重是 87 公斤,身高是 5 英尺 10 英寸。脚本检查 SE、美国和英国单位的输出。
使用 Logger.getLogger(“devpinoyLogger”) 我们创建系统级日志
使用 log.debug 方法我们将数据存储到 Manual.log 中
步骤 8) 运行脚本。打开 Manual 和 Selenium 日志的位置以检查日志数据。
如何使用 LogExpert 工具分析日志
- 从 https://github.com/zarunbal/LogExpert 下载工具。转到 LogExpert 下载文件夹
- 打开 LogExpert.exe
- 单击“文件”->“打开”,然后浏览到存储 Manual.log 和 Selenium.log 文件的路径。选择文件
- 选择“Follow tail”选项
选择“Follow tail”选项可以跟踪日志,这意味着 LogExpert 在脚本执行阶段会自动更新日志文件。如果使用任何其他编辑器(如记事本),则必须反复关闭并重新打开文件以更新日志。但是使用 ExpertTool 在“Follow Tail”模式下,这不再需要。
以下图像显示了日志的布局
使用 LogExpert 工具,可以调试 Selenium WebDriver 创建的日志,因为在此工具中可以
- 搜索任何文本和正则表达式,
- 创建书签并评论它们,并且还可以在书签之间导航,这在任何其他工具中都不可能,
- 过滤日志并搜索文本范围,并且还可以将另一个过滤器应用于以前过滤的日志,
- 根据某些特定单词突出显示不同的行。
此工具还有助于将数据分区到不同的列中。