selenium java 项目中的 log4j 问题

log4j issue in selenium java project

-Dlog4j.debug=真

如何让所有 class 人都可以使用上述功能?

我只能通过手动将其置于调试配置中 运行 在 1 class 中 运行 但是当我转到 运行 另一个 class 它不起作用。

我希望控制台中的以下描述可用于所有测试 classes:

log4j: Trying to find [log4j.xml] using context classloader sun.misc.Launcher$AppClassLoader@5c647e05.
log4j: Trying to find [log4j.xml] using sun.misc.Launcher$AppClassLoader@5c647e05 class loader.
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource().
log4j: Trying to find [log4j.properties] using context classloader sun.misc.Launcher$AppClassLoader@5c647e05.
log4j: Using URL 
log4j: Parsing for [root] with value=[debug, console, file  ].
log4j: Level token is [debug].
log4j: Category root set to DEBUG
log4j: Parsing appender named "console".
log4j: Parsing layout options for "console".
log4j: Setting property [conversionPattern] to [%d{MM-dd-yyyy HH:mm:ss} %F %-5p [%t] %c{2} %L - %m%n].
log4j: End of parsing for "console".
log4j: Parsed "console" options.
log4j: Parsing appender named "file".
log4j: Parsing layout options for "file".
log4j: Setting property [conversionPattern] to [%d{ISO8601} %5p [%t] %c{1}:%L - %m%n].
log4j: End of parsing for "file".
log4j: Setting property [append] to [false].
log4j: Setting property [file] to [application.log].
log4j: Setting property [maxBackupIndex] to [10].
log4j: Setting property [maxFileSize] to [10mb ].
log4j: setFile called: application.log, false
log4j: setFile ended
log4j: Parsed "file" options.
log4j: Finished configuring.

log4j是怎么配置的? 要配置 log4j,我们必须决定要实现哪个 appender。相应地,将设置appender的参数。

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

根记录器

log4j.rootLogger=DEBUG,file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=D:\ProjectXXX\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:\ ProjectXXX\src\Manual.logs
log4j.appender.dest1.Append=false

在上面的代码中,我们配置了 log4j 来登录两个不同的文件,分别命名为 Selenium.log 和 Manual.log.

file和dest1是两个标识符。 "File" 用于给出保存日志的文件名 "maxFileSize"用于配置日志文件的最大大小。当文件达到此大小时,将创建一个具有相同名称的新文件,并将旧文件名添加为索引。 "maxBackupIndex"用于配置最大备份文件数。 "layout"用于设置日志文件的格式。 "Append"用于设置追加功能。如果设置为 false,那么每次都会创建一个新文件而不是旧文件来进行日志记录 如何在脚本中使用 log4j? 在代码中,我们使用 "log" 作为引用变量引用 Logger Class

的 getLogger 方法

记录器日志 = Logger.getLogger("devpinoyLogger");

使用"log"引用变量和调试方法来记录我们想要的信息。

log.debug("--信息--");

什么是 LogExpert 工具? LogExpert 工具是为 Windows 开发的用于跟踪日志的工具 它是免费的开源日志查看器。 它是一个日志分析工具,具有搜索、过滤、书签和突出显示日志等多种功能 在此工具日志中,文件在打开时会自动更新 在此工具中,我们可以在不同的选项卡中打开多个日志文件 我们还可以对书签进行评论,并且有快捷键可以在不同的书签之间进行导航。我们还可以看到完整的书签列表并从那里导航 帮助文件中给出了该工具的快捷方式,以便于参考该工具。 将 Log4j 与 Selenium 结合使用的步骤 步骤 1) 在 Eclipse 中创建一个名称为 log4j_demo

的新项目

Log4j 与 Selenium 教程

步骤 2) 右击 src -> Build Path -> Configure Build Path

Log4j 与 Selenium 教程

步骤 2) 单击库并添加 Log4J 库。您可以从 https://logging.apache.org/log4j/1.2/download.html

下载

Log4j 与 Selenium 教程

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

右键单击 src -> 新建 -> 其他 -> 常规 -> 文件 将文件名命名为 "log4j.properties" 点击完成 再创建两个文件并给它们命名,例如 Selenium.logs 和 Manual.logs。这些文件将包含系统创建的所有日志和手动记录的语句

Log4j 与 Selenium 教程

步骤 4) 在 log4j.properties 中复制整个配置。

Log4j 与 Selenium 教程

步骤 5) 创建主 class:

右键单击默认包 -> 新建 -> Class 输入 class 名称并单击完成 Log4j 与 Selenium 教程

Step 6) 将以下代码复制到main class

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("http://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();
    }
}

在上面的代码中,我们访问http://healthunify.com/bmicalculator/and验证BMI计算器。输入的体重为 87KG,身高为 5 英尺 10 英寸。该脚本检查以 SE、美国和英国为单位的输出。