Wat is Log4j?
Log4j is een snel, flexibel en betrouwbaar logging framework (APIS) geschreven in Java, ontwikkeld begin 1996. Het wordt gedistribueerd onder de Apache Software License. Log4J is geporteerd naar de talen C, C ++, C #, Perl, Python, Ruby en Eiffel. Het is een tool die wordt gebruikt voor kleine tot grote Selenium Automation-projecten.
Waarom Log4j gebruiken?
- Het is een open source
- Met Log4j is het mogelijk om de stroomdetails van onze Selenium Automation op te slaan 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 heeft drie hoofdcomponenten
- Loggers : 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 logger-klasse : Logger-klasse is een op Java gebaseerd hulpprogramma dat alle generieke methoden al heeft geïmplementeerd om log4j te gebruiken
- Definieer het Log4j-niveau : in de eerste plaats zijn er vijf soorten logboekniveaus
- All - Dit niveau van loggen zal alles loggen (het schakelt alle logs in)
- DEBUG - druk de foutopsporingsinformatie af en is nuttig in de ontwikkelingsfase
- INFO - druk informatief bericht af dat de voortgang van de aanvraag aangeeft
- WAARSCHUWING - informatie afdrukken over defect en onverwacht systeemgedrag.
- FOUT - afdrukfoutbericht waardoor het systeem mogelijk door kan gaan
- FATAL - druk systeemkritische informatie af die ervoor zorgt dat de applicatie crasht
- UIT - Geen logboekregistratie
- Appenders : Het wordt gebruikt om LogEvents op hun bestemming af te leveren. Het beslist wat er met de loginformatie gebeurt. In eenvoudige bewoordingen wordt het gebruikt om het logboekbestand te schrijven. Hieronder volgen enkele soorten Appenders
- ConsoleAppender logt naar standaarduitvoer
- Bestandsaanvrager drukt logboeken af naar een bepaald bestand
- Rollende bestandsappender naar een bestand met maximale grootte
Opmerking: in log4j-eigenschappen kunnen we appender met elke naam aanroepen. Er zijn ook andere toevoegingen, maar we zullen ons tot deze beperken.
- Lay-outs : het is verantwoordelijk voor het opmaken van logboekinformatie in verschillende stijlen.
De klasse Logger biedt verschillende methoden om logboekactiviteiten af te handelen. Het biedt twee statische methoden voor het verkrijgen van een logger-object.
Openbare statische logger getRootLogger ()Public static Logger getLogger (String naam)
Hoe log4j is geconfigureerd?
Om log4j te configureren, moeten we beslissen welke appender we moeten implementeren. Dienovereenkomstig worden de parameters van appender ingesteld.
- We zullen DEBUG-niveau en RollingFileAppender gebruiken
- We zullen twee configuraties of logboeken doen,
- Ten eerste: rootlogger, die alle door het systeem gegenereerde logboeken in de bestandsnaam zal schrijven, dwz Selenium.logs
- Ten tweede: schrijft de informatie die wordt gegenereerd door handmatige opdrachten in code naar de bestandsnaam Manual.logs
- De lay-out is PatternLayout
#Root logger
log4j.rootLogger = DEBUG, bestandlog4j.appender.file = org.apache.log4j.RollingFileAppenderlog4j.appender.file.File = D: \\ Guru99 \\ src \\ Selenium.logslog4j.appender.file.maxFileSize = 900 KBlog4j.appender.file.maxBackupIndex = 5log4j.appender.file.layout = org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern =% d {ABSOLUTE}% 5p% c {1} :% L -% m% nlog4j.appender.file.Append = false
#Application Logs
log4j.logger.devpinoyLogger = DEBUG, dest1log4j.appender.dest1 = org.apache.log4j.RollingFileAppenderlog4j.appender.dest1.maxFileSize = 900 KBlog4j.appender.dest1.maxBackupIndex = 6log4j.appender.dest1.layout = org.apache.log4j.PatternLayoutlog4j.appender.dest1.layout.ConversionPattern =% d {dd / MM / jjjj UU: mm: ss}% c% m% nlog4j.appender.dest1.File = D: \\ Guru99 \\ src \\ Manual.logslog4j.appender.dest1.Append = false
In het bovenstaande voorbeeld hebben we log4j geconfigureerd om in te loggen in twee verschillende bestanden genaamd Selenium.log en Manual.log.
- file en dest1 zijn de twee identifiers.
- "Bestand" wordt gebruikt om een bestandsnaam te geven waarin logboeken 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 het is ingesteld op false, dan zal elke keer dat een nieuw bestand wordt gemaakt in plaats van een oud bestand worden gebruikt voor logboekregistratie
Hoe log4j wordt gebruikt in scripts?
In code hebben we "log" gebruikt als een referentievariabele die verwijst naar de getLogger-methode van Logger Class
Logger log = Logger.getLogger ("devpinoyLogger");
Gebruik "log" verwijzende variabele en debug-methode om de gewenste informatie te loggen.
log.debug ("- informatie--");
Wat is een LogExpert-tool?
- LogExpert-tool is een tool voor Windows die is ontwikkeld om de logboeken te volgen
- Het is een gratis en open source logviewer.
- Het is een logboekanalysetool met meerdere functies, zoals zoeken, filteren, bladwijzers maken en de logboeken markeren
- In deze toollogboeken 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 de 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.
Stappen om Log4j te gebruiken met Selenium
Stap 1) Maak in Eclipse een nieuw project aan met de naam log4j_demo
Stap 2) Klik met de rechtermuisknop op src -> Build Path -> Build Path configureren
Stap 2) Klik op Bibliotheken en voeg Log4J-bibliotheek toe. U kunt het downloaden van https://logging.apache.org/log4j/1.2/download.html
Stap 3) Maak een nieuw bestand. Dit bestand bevat de volledige log4j-configuratie
- Klik met de rechtermuisknop op src -> Nieuw -> Andere -> Algemeen -> Bestand
- Geef de bestandsnaam als "log4j.properties"
- Klik op Voltooien
Maak nog twee bestanden en geef ze namen zoals Selenium.logs en Manual.logs. Deze bestanden bevatten alle logboeken die door het systeem zijn gemaakt en handmatig geregistreerde instructies
Stap 4) Kopieer in log4j.properties de volledige configuratie.
Stap 5) Maak een hoofdklasse aan:
- Klik met de rechtermuisknop op het standaardpakket -> Nieuw -> Klasse
- Geef de klasnaam en klik op voltooien
Stap 6) Kopieer de volgende code naar de hoofdklasse
import org.openqa.selenium.By;importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.firefox.FirefoxDriver;importeer org.apache.log4j.Logger;openbare klasse LoggingDemo {* @param argspublic static void main (String [] args) {// TODO Automatisch gegenereerde methodestubWebDriver-stuurprogramma = nieuwe FirefoxDriver ();Logger log = Logger.getLogger ("devpinoyLogger");driver.get ("http://healthunify.com/bmicalculator/");log.debug ("opening website");driver.manage (). timeouts (). implicitlyWait (20, TimeUnit.SECONDS);log.debug ("gewicht invoeren");driver.findElement (By.name ("wg")). sendKeys ("87");log.debug ("kilogram selecteren");driver.findElement (By.name ("opt1")). sendKeys ("kilograms");log.debug ("hoogte in voet selecteren");driver.findElement (By.name ("opt2")). sendKeys ("5");log.debug ("hoogte selecteren in inch");driver.findElement (By.name ("opt3")). sendKeys ("10");log.debug ("Klikken op berekenen");driver.findElement (By.name ("cc")). click ();log.debug ("SIUnit-waarde ophalen");String SIUnit = driver.findElement (By.name ("si")). GetAttribute ("value");log.debug ("USUnit-waarde ophalen");String USUnit = driver.findElement (By.name ("ons")). GetAttribute ("waarde");log.debug ("UKUnit-waarde ophalen");String UKUnit = driver.findElement (By.name ("uk")). GetAttribute ("value");log.debug ("Algemene beschrijving ophalen");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 =" + opmerking);driver.quit ();
In de bovenstaande code bezoeken we http://healthunify.com/bmicalculator/ en verifiëren 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 7) Voer het script uit. Open de locatie van handmatige en Selenium-logboeken om de logboekgegevens te controleren.
Hoe de LogExpert-tool kan worden gebruikt om logboeken te analyseren
- Download de tool van http://logexpert.codeplex.com/. Ga naar de downloadmap van LogExpert
- Open LogExpert.exe
- Klik op Bestand -> Openen en blader naar het pad waar Manual.log- en Selenium.log-bestanden zijn opgeslagen. Selecteer het bestand
- Selecteer de optie "Follow tail"
Als u de optie volg staart selecteert, wordt het bijhouden van logboeken ingeschakeld, 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 steeds weer sluiten en opnieuw openen om de logboeken bij te werken. Maar met ExpertTool in Follow Tail-modus is dit niet vereist.
De volgende afbeeldingen tonen de lay-out van de logboeken
Met behulp van de LogExpert-tool kan men logboeken debuggen die zijn gemaakt door de selenium-webdriver zoals in deze tool eens kan
- zoeken naar tekst en reguliere expressies,
- maak een bladwijzer en becommentarieer ze en kan ook tussen bladwijzers navigeren, wat niet mogelijk is in een andere tool,
- Filter de logboeken en zoek naar tekstbereiken en kan ook een ander filter toepassen op de vorige gefilterde logboeken,
- Markeer een andere regel op basis van enkele bepaalde woorden.
Deze tool helpt ook om de gegevens in verschillende kolommen te verdelen.