Log4j in Selenium: Hoe u het Log4j-eigenschappenbestand kunt downloaden en gebruiken
Wat is Log4j? Selenium?
Log4j is een snel, flexibel en betrouwbaar loggingframework (APIS) waarin is geschreven Java ontwikkeld begin 1996. Het wordt gedistribueerd onder de apache Softwarelicentie. Log4J is geporteerd naar de C, C++, C#, Perl, Python, Ruby- en Eiffel-talen. Het is een hulpmiddel dat wordt gebruikt voor kleine tot grote schaal Selenium Automatisering projecten.
Waarom Log4j gebruiken?
- Het is een open source
- Met Log4j is het mogelijk om de stroomdetails van onze Selenium Automatisering in een bestand of databases
- Log4j wordt gebruikt voor zowel grote als kleine projecten
- In Log4j gebruiken we log-instructies in plaats van SOPL-instructies in de code om de status van een project te kennen terwijl het wordt uitgevoerd
Log4j-componenten
Houthakkers
Het is verantwoordelijk voor het loggen van informatie. Om loggers in een project te implementeren, moeten de volgende stappen worden uitgevoerd
Maak een instantie voor de loggerklasse
Logger-klasse is a Java-gebaseerd hulpprogramma waarin alle generieke methoden al zijn geïmplementeerd om log4j te gebruiken
Definieer het Log4j-niveau
Er zijn in de eerste plaats vijf soorten logniveaus
- Alles – Dit niveau van loggen zal alles loggen (alle logs worden ingeschakeld)
- DEBUG – druk de foutopsporingsinformatie af en is nuttig in de ontwikkelingsfase
- INFO – print een informatiebericht dat de voortgang van de aanvraag benadrukt
- WAARSCHUWEN – druk informatie af over defect en onverwacht systeemgedrag.
- FOUT – druk een foutbericht af waardoor het systeem mogelijk doorgaat
- FATAAL – druk systeemkritieke informatie af die ervoor zorgt dat de applicatie crasht
- UIT – Geen logboekregistratie
appenders
Het wordt gebruikt om LogEvents naar hun bestemming te brengen. Het bepaalt wat er met loginformatie gebeurt. Simpel gezegd, het wordt gebruikt om de logs in een bestand te schrijven. Hieronder volgen enkele typen Appenders
- ConsoleAppender logt naar standaarduitvoer
- Bestandsappender drukt logboeken af naar een bepaald bestand
- Rollende bestandstoevoeging aan een bestand met maximale grootte
Opmerking: In log4j-eigenschappen kunnen we appender met elke naam aanroepen. Er zijn ook andere appenders, maar we zullen ons beperken tot deze paar.
lay-outs
Het is verantwoordelijk voor het opmaken van loginformatie in verschillende stijlen.
De klasse Logger biedt verschillende methoden voor het afhandelen van logboekactiviteiten. Het biedt twee statische methoden voor het verkrijgen van een Logger-object.
Public static Logger getRootLogger() Public static Logger getLogger(String name)
Hoe log4j is geconfigureerd?
Om log4j te configureren moeten we beslissen welke appender we willen implementeren. Dienovereenkomstig zullen de parameters van de appender worden ingesteld.
- We zullen DEBUG-niveau en RollingFileAppender gebruiken
- We zullen twee configuraties of logs uitvoeren,
- Ten eerste: rootlogger, die alle door het systeem gegenereerde logs in bestandsnaam schrijft, dwz Selenium.logboeken
- Ten tweede: zal de informatie die door handmatige opdrachten wordt gegenereerd, in code schrijven naar de bestandsnaam - Manual.logs
#Rootlogger
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
#Applicatielogboeken
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
In het bovenstaande voorbeeld hebben we log4j geconfigureerd om in te loggen in twee verschillende bestanden met de naam Selenium.log en Handmatig.log.
- file en dest1 zijn de twee identificatiegegevens.
- “Bestand” wordt gebruikt om de bestandsnaam te geven waarin logs worden opgeslagen
- “maxFileSize” wordt gebruikt om de maximale grootte van het logbestand te configureren. Wanneer het bestand deze grootte bereikt, wordt er een nieuw bestand gemaakt met dezelfde naam en wordt de oude bestandsnaam als index eraan toegevoegd.
- “maxBackupIndex” wordt gebruikt om het maximale aantal bestanden te configureren waarvan een back-up moet worden gemaakt.
- “layout” wordt gebruikt om het formaat van het logbestand in te stellen.
- “Append” wordt gebruikt om de append-functie in te stellen. Als deze is ingesteld op false, wordt er elke keer een nieuw bestand aangemaakt in plaats van dat het oude bestand wordt gebruikt voor loggen
Hoe log4j wordt gebruikt binnen het script?
In de code hebben we “log” gebruikt als referentievariabele die verwijst naar de getLogger-methode van Logger Class
Logger log = Logger.getLogger("devpinoyLogger");
Gebruik de “log”-referentievariabele en debug-methode om de gewenste informatie te loggen.
log.debug("--information--");
Wat is een LogExpert-tool?
- LogExpert tool is een tool voor Windows ontwikkeld om de boomstammen te volgen
- Het is een gratis en open source logviewer.
- Het is een hulpmiddel voor logboekanalyse met meerdere functies, zoals zoeken, filteren, bladwijzers toevoegen en de logboeken markeren
- In de logbestanden van deze tool worden bestanden automatisch bijgewerkt wanneer ze worden geopend
- In deze tool kunnen we meerdere logbestanden op verschillende tabbladen openen
- We kunnen ook opmerkingen bij bladwijzers plaatsen en er is een sneltoets om tussen verschillende bladwijzers te navigeren. We kunnen ook de volledige bladwijzerlijst bekijken en van daaruit navigeren
- Snelkoppelingen van de tool worden gegeven in het helpbestand, zodat ze naar de tool kunnen worden verwezen.
Hoe Log4j te gebruiken Selenium
Stap 1) In Eclipse maak een nieuw project met de naam log4j_demo
Stap 2) Klik met de rechtermuisknop op src -> Build-pad -> Build-pad configureren
Stap 3) Klik op Bibliotheken en Voeg Log4J-bibliotheek toe. Je kunt het downloaden van https://logging.apache.org/log4j/1.2/download.html
Stap 4) Maak een nieuw bestand. Dit bestand bevat alle log4j-configuratie
- Klik met de rechtermuisknop op src -> Nieuw -> Overige -> Algemeen -> Bestand
- Geef de bestandsnaam “log4j.properties”
- Klik op Voltooien
Maak nog twee bestanden en geef ze namen zoals Selenium.logs en handmatige.logs. Deze bestanden bevatten alle logboeken die door het systeem zijn gemaakt en handmatig geregistreerde verklaringen
Stap 5) Kopieer in log4j.properties de volledige configuratie.
Stap 6) Hoofdklasse aanmaken:
- Klik met de rechtermuisknop op standaardpakket -> Nieuw -> Klasse
- Geef de klasnaam op en klik op Voltooien
Stap 7) Kopieer de volgende code naar de hoofdklasse
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(); } }
In de bovenstaande code bezoeken we https://healthunify.com/bmicalculator/en verifieer de BMI-calculator. Het ingevoerde gewicht is 87 kg en de hoogte is 5 voet 10 inch. Het script controleert de uitvoer in SE-, US- en UK-eenheden.
Met behulp van Logger.getLogger(“devpinoyLogger”) maken we logboeken op systeemniveau
Met behulp van de log.debug-methode slaan we gegevens op in Manual.log
Stap 8) Voer het script uit. Open de locatie van Handmatig en Selenium logs om de loggegevens te controleren.
Hoe de LogExpert-tool kan worden gebruikt om logs te analyseren
- Download de tool van https://github.com/zarunbal/LogExpert . Ga naar de LogExpert downloadmap
- Open LogExpert.exe
- Klik op Bestand -> Openen en blader naar het pad waar Manual.log en Selenium.log-bestanden worden opgeslagen. Selecteer het bestand
- Selecteer de optie ‘Volg staart’
Door de follow-tail-optie te selecteren, wordt het volgen van logs mogelijk gemaakt, wat betekent dat LogExpert het logbestand automatisch bijwerkt wanneer het script zich in de uitvoeringsfase bevindt. Als we een andere editor zoals Kladblok gebruiken, moeten we het bestand keer op keer sluiten en opnieuw openen om de logbestanden bij te werken. Maar met ExpertTool in Follow Tail-modus is dit niet vereist.
De volgende afbeeldingen tonen de indeling van de logs
Met behulp van de LogExpert-tool kan men logs debuggen die door de Selenium-webdriver zijn gemaakt, zoals in deze tool kan
- zoeken naar tekst en reguliere expressies,
- maak een bladwijzer en becommentarieer deze en u kunt ook tussen bladwijzers navigeren, wat in geen enkel ander hulpmiddel mogelijk is,
- Filter de logboeken en zoek naar tekstbereiken en u kunt ook een ander filter toepassen op de eerder gefilterde logboeken,
- Markeer een andere regel op basis van enkele bepaalde woorden.
Deze tool helpt ook om de gegevens in verschillende kolommen te verdelen.