Selenium 中的 Log4j:如何下载和使用 Log4j 属性文件

Selenium 中的 Log4j 是什么?

Log4j 是一个快速、灵活、可靠的日志框架(API),于 1996 年初用 Java 编写。它以 Apache 软件许可证分发。Log4J 已被移植到 C、C++、C#、PerlPython、Ruby 和 Eiffel 语言。它是一个用于中小型 Selenium 自动化项目的工具。

为什么要使用 Log4j?

  • 它是开源的
  • 使用 Log4j,可以将 Selenium 自动化的流程详情存储到文件或数据库中
  • Log4j 适用于大型和小型项目
  • 在 Log4j 中,我们在代码中使用日志语句而不是 SOPL 语句,以了解项目在执行时的状态

Log4j 组件

Log4j Components

记录器

它负责记录信息。要在项目中实现记录器,需要执行以下步骤

为 logger 类创建实例

Logger 类是一个基于 Java 的实用程序,它已经实现了所有通用方法来使用 log4j

定义 Log4j 级别

主要有五种日志级别

  1. All – 此日志级别将记录所有内容(它打开所有日志)
  2. DEBUG – 打印调试信息,在开发阶段很有用
  3. INFO – 打印突出应用程序进度的信息性消息
  4. WARN – 打印有关错误和意外系统行为的信息。
  5. ERROR – 打印可能允许系统继续运行的错误消息
  6. FATAL – 打印导致应用程序崩溃的系统关键信息
  7. OFF – 不记录

附加器

它用于将 LogEvents 传递到其目的地。它决定日志信息将如何处理。简单来说,它用于将日志写入文件。以下是一些附加器类型

  1. ConsoleAppender 将日志输出到标准输出
  2. File appender 将日志打印到某个文件
  3. Rolling file appender 将日志输出到具有最大大小的文件

注意:在 log4j 属性中,我们可以用任何名称调用附加器。还有其他附加器,但我们将仅限于这些。

布局

它负责以不同样式格式化日志信息。

Logger 类提供不同的方法来处理日志活动。它提供了两个静态方法来获取 Logger 对象。

Public static Logger getRootLogger()
Public static Logger getLogger(String name)

Log4j 如何配置?

要配置 log4j,我们必须决定要实现哪个附加器。因此,将设置附加器的参数。

  • 我们将使用 DEBUG 级别和 RollingFileAppender
  • 我们将进行两个配置或日志,
  • 第一:根记录器,它将所有系统生成的日志写入名为 Selenium.logs 的文件
  • 第二:将代码中手动命令生成的信息写入文件 - Manual.logs
  • 布局将是 PatternLayout
  • #根记录器

    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 工具?

    1. LogExpert 工具是为 Windows 开发的用于跟踪日志的工具
    2. 它是一个免费开源的日志查看器。
    3. 它是一个具有搜索、过滤、书签和突出显示日志等多种功能的日志分析工具
    4. 在此工具中,日志文件打开后会自动更新
    5. 在此工具中,我们可以在不同的选项卡中打开多个日志文件
    6. 我们还可以对书签进行评论,并且有快捷键可以在不同的书签之间导航。我们还可以查看完整的书签列表并从那里导航
    7. 工具的快捷方式在帮助文件中给出,以便可以参考该工具。

    如何在 Selenium 中使用 Log4j

    步骤 1) 在 Eclipse 中创建一个名为 log4j_demo 的新项目

    Use Log4j In Selenium

    步骤 2) 右键单击 src -> 构建路径 -> 配置构建路径

    Use Log4j In Selenium

    步骤 3) 单击 Libraries 并添加 Log4J 库。您可以从 https://logging.apache.ac.cn/log4j/1.2/download.html 下载

    Use Log4j In Selenium

    步骤 4) 创建一个新文件。此文件将包含所有 log4j 配置

    1. 右键单击 src -> 新建 -> 其他 -> 通用 -> 文件
    2. 将文件名命名为“log4j.properties”
    3. 单击完成

    创建另外两个文件,并将它们命名为 Selenium.logs 和 Manual.logs。这些文件将包含系统创建的所有日志和手动记录的语句

    Use Log4j In Selenium

    步骤 5) 在 log4j.properties 中复制所有配置。

    Use Log4j In Selenium

    步骤 6) 创建主类

    1. 右键单击默认包 -> 新建 -> 类
    2. 输入类名并单击完成

    Use Log4j In Selenium

    步骤 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 工具分析日志

    1. https://github.com/zarunbal/LogExpert 下载工具。转到 LogExpert 下载文件夹

      LogExpert Tool Can Be Used To Analyze Logs

    2. 打开 LogExpert.exe
    3. 单击“文件”->“打开”,然后浏览到存储 Manual.log 和 Selenium.log 文件的路径。选择文件
    4. 选择“Follow tail”选项

      LogExpert Tool Can Be Used To Analyze Log

      选择“Follow tail”选项可以跟踪日志,这意味着 LogExpert 在脚本执行阶段会自动更新日志文件。如果使用任何其他编辑器(如记事本),则必须反复关闭并重新打开文件以更新日志。但是使用 ExpertTool 在“Follow Tail”模式下,这不再需要。

      以下图像显示了日志的布局

      LogExpert Tool Can Be Used To Analyze Log

      LogExpert Tool Can Be Used To Analyze Log

    使用 LogExpert 工具,可以调试 Selenium WebDriver 创建的日志,因为在此工具中可以

    • 搜索任何文本和正则表达式,
    • 创建书签并评论它们,并且还可以在书签之间导航,这在任何其他工具中都不可能,
    • 过滤日志并搜索文本范围,并且还可以将另一个过滤器应用于以前过滤的日志,
    • 根据某些特定单词突出显示不同的行。

    此工具还有助于将数据分区到不同的列中。