Tuesday, September 27, 2016

Log4j Logging

Log4j Logging

Log4j is an audit logging framework that gives information about what has happened during execution. It has following advantages:

Enables us to understand the the application run.

log output can be saved that can be analyzed later.

Helps in debugging, in case of test automation failures

Can also be used for auditing purposes to look at the application's health.

Components

1. Instance of Logger class.

2. Log level methods used for logging the messages as one of the following

error

warn

info

debug

log

Example

Let us use the same percent calculator for this demo.

Step 1 : Download log4j JAR file from https://logging.apache.org/log4j/1.2/download.html and download the Zipped format of the JAR file.

Step 2 : Create 'New Java Project' by navigating to File Menu.

Step 3 : Enter the name of the project as 'log4j_demo' and click 'Next'

Step 4 : Click Add External Jar and add 'Log4j-1.2.17.jar'

Step 5 : Click Add External Jar and add Selenium WebDriver Libraries.

Step 6 : Click Add External Jar and add Selenium WebDriver JAR's located in Libs folder.

Step 7 : Add a New XML file using which we can specify the Log4j Properties.

Step 8 : Enter the Logfile name as 'Log4j.xml'.

Step 9 : Final folder structure is shown below.

Step 10 : Now add the properties of Log4j which would be picked up during execution.

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> <appender name="fileAppender" class="org.apache.log4j.FileAppender"> <param name="Threshold" value="INFO" /> <param name="File" value="percent_calculator.log"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%c] (%t:%x) %m%n" /> </layout> </appender> <root> <level value="INFO"/> <appender-ref ref="fileAppender"/> </root> </log4j:configuration>

Step 11 : Now for demo purpose, we will incorporate log4j in the same test that we have been performing(percent calculator). Add a class file with 'Main' function

package log4j_demo; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.apache.log4j.xml.DOMConfigurator; import java.util.concurrent.TimeUnit; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; public class log4j_demo { static final Logger logger = LogManager.getLogger(log4j_demo.class.getName()); public static void main(String[] args) { DOMConfigurator.configure("log4j.xml"); logger.info("# # # # # # # # # # # # # # # # # # # # # # # # # # # "); logger.info("TEST Has Started"); WebDriver driver = new FirefoxDriver(); //Puts a Implicit wait, Will wait for 10 seconds before throwing exception driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //Launch website driver.navigate().to("http://www.calculator.net/"); logger.info("Open Calc Application"); //Maximize the browser driver.manage().window().maximize(); // Click on Math Calculators driver.findElement(By.xpath(".//*[@id='menu']/div[3]/a")).click(); logger.info("Clicked Math Calculator Link"); // Click on Percent Calculators driver.findElement(By.xpath(".//*[@id='menu']/div[4]/div[3]/a")).click(); logger.info("Clicked Percent Calculator Link"); // Enter value 10 in the first number of the percent Calculator driver.findElement(By.id("cpar1")).sendKeys("10"); logger.info("Entered Value into First Text Box"); // Enter value 50 in the second number of the percent Calculator driver.findElement(By.id("cpar2")).sendKeys("50"); logger.info("Entered Value into Second Text Box"); // Click Calculate Button driver.findElement(By.xpath(".//*[@id='content']/table/tbody/tr/td[2]/input")).click(); logger.info("Click Calculate Button"); // Get the Result Text based on its xpath String result = driver.findElement(By.xpath(".//*[@id='content']/p[2]/span/font/b")).getText(); logger.info("Get Text Value"); //Print a Log In message to the screen logger.info(" The Result is " + result); if(result.equals("5")) { logger.info("The Result is Pass"); } else { logger.error("TEST FAILED. NEEDS INVESTIGATION"); } logger.info("# # # # # # # # # # # # # # # # # # # # # # # # # # # "); //Close the Browser. driver.close(); } }

Execution

Upon execution the log file is created on the root folder as shown below. You CANNOT locate the file in Eclipse. 

No comments:

Post a Comment