Log4j nedir?
Log4j, 1996'nın başlarında geliştirilen Java ile yazılmış hızlı, esnek ve güvenilir bir günlükleme çerçevesidir (APIS). Apache Yazılım Lisansı altında dağıtılır. Log4J, C, C ++, C #, Perl, Python, Ruby ve Eyfel Dillerine taşınmıştır. Küçükten büyüğe Selenium Otomasyon projeleri için kullanılan bir araçtır.
Neden Log4j kullanıyorsunuz?
- Açık kaynak
- Log4j ile Selenium Otomasyonumuzun akış detaylarını bir dosyada veya veri tabanlarında saklamak mümkündür.
- Log4j hem büyük hem de küçük projeler için kullanılır
- Log4j'de, bir projenin yürütülürken durumunu bilmek için kodda SOPL ifadeleri yerine günlük ifadeleri kullanırız.
Log4j'nin üç temel bileşeni vardır
- Kaydediciler : Bilgilerin kaydedilmesinden sorumludur. Bir projeye kaydedicileri uygulamak için aşağıdaki adımların gerçekleştirilmesi gerekir -
- Logger sınıfı için bir örnek oluşturun : Logger sınıfı, log4j'yi kullanmak için tüm genel yöntemleri zaten uygulayan Java tabanlı bir yardımcı programdır.
- Log4j seviyesini tanımlayın : Öncelikle beş çeşit günlük seviyesi vardır
- Tümü - Bu düzeyde günlük kaydı her şeyi günlüğe kaydeder (tüm günlükleri açar)
- DEBUG - hata ayıklama bilgilerini yazdırın ve geliştirme aşamasında faydalıdır
- BİLGİ - uygulamanın ilerlemesini vurgulayan bilgi mesajı yazdırın
- UYARI - hatalı ve beklenmeyen sistem davranışına ilişkin bilgileri yazdırın.
- HATA - sistemin devam etmesine izin verebilecek hata mesajı yazdırın
- ÖNEMLİ - uygulamanın çökmesine neden olan kritik sistem bilgilerini yazdırın
- KAPALI - Günlük kaydı yok
- Ekler : LogEvents'i hedeflerine ulaştırmak için kullanılır. Günlük bilgileriyle ne olacağına karar verir. Basit bir deyişle, günlükleri dosyaya yazmak için kullanılır. Aşağıda birkaç Eklenti türü bulunmaktadır
- ConsoleAppender, standart çıktıya günlükler
- Dosya ekleyici, günlükleri bir dosyaya yazdırır
- Dosya ekleyiciyi maksimum boyuta sahip bir dosyaya döndürme
Not: log4j özelliklerinde, ekleyiciyi herhangi bir isimle çağırabiliriz. Başka ekleyiciler de var ama biz bu azınlık ile sınırlayacağız.
- Düzenler : Günlük bilgilerini farklı stillerde biçimlendirmekten sorumludur.
Logger sınıfı, günlük etkinliklerini işlemek için farklı yöntemler sağlar. Bir Logger Nesnesi elde etmek için iki statik yöntem sağlar.
Genel statik Günlükleyici getRootLogger ()Genel statik Günlükleyici getLogger (Dize adı)
Log4j nasıl yapılandırılır?
Log4j'yi yapılandırmak için hangi ekleyicinin uygulanacağına karar vermeliyiz. Buna göre ekleyicinin parametreleri ayarlanacaktır.
- DEBUG düzeyini ve RollingFileAppender'ı kullanacağız
- İki yapılandırma veya günlük yapacağız,
- Birincisi: kök günlükçü, sistem tarafından oluşturulan tüm günlükleri dosya adına yani Selenium.logs'a yazar
- İkincisi: Koddaki manuel komutlarla üretilen bilgileri dosya adına yazacak - Manual.logs
- Düzen PatternLayout olacaktır
#Root logger
log4j.rootLogger = HATA AYIKLA, dosyalog4j.appender.file = org.apache.log4j.RollingFileAppenderlog4j.appender.file.File = D: \\ Guru99 \\ src \\ Selenium.logslog4j.appender.file.maxFileSize = 900KBlog4j.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
# Uygulama Günlükleri
log4j.logger.devpinoyLogger = DEBUG, dest1log4j.appender.dest1 = org.apache.log4j.RollingFileAppenderlog4j.appender.dest1.maxFileSize = 900KBlog4j.appender.dest1.maxBackupIndex = 6log4j.appender.dest1.layout = org.apache.log4j.PatternLayoutlog4j.appender.dest1.layout.ConversionPattern =% d {gg / AA / yyyy SS: dd: ss}% c% m% nlog4j.appender.dest1.File = D: \\ Guru99 \\ src \\ Manual.logslog4j.appender.dest1.Append = false
Yukarıdaki Örnekte, log4j'yi Selenium.log ve Manual.log olarak adlandırılan iki farklı dosyada oturum açacak şekilde yapılandırdık.
- dosya ve dest1 iki tanımlayıcıdır.
- "Dosya", günlüklerin kaydedileceği dosya adını vermek için kullanılır
- Günlük dosyasının maksimum boyutunu yapılandırmak için "maxFileSize" kullanılır. Dosya bu boyuta ulaştığında, aynı adla yeni bir dosya oluşturulacak ve eski dosya adı buna bir İndeks olarak eklenecektir.
- "maxBackupIndex", yedeklenecek maksimum dosya sayısını yapılandırmak için kullanılır.
- Günlük dosyasının biçimini ayarlamak için "düzen" kullanılır.
- "Ekle", ekleme işlevini ayarlamak için kullanılır. Yanlış olarak ayarlanırsa, her seferinde yeni bir dosya oluşturulacak, günlük kaydı için eski dosya yerine yeni bir dosya kullanılacaktır.
Log4j komut dosyası içinde nasıl kullanılır?
Kodda, Logger Class'ın getLogger metoduna referans veren bir referans değişkeni olarak "log" kullandık.
Logger log = Logger.getLogger ("devpinoyLogger");
İstediğimiz bilgileri günlüğe kaydetmek için "günlük" referans değişkenini ve hata ayıklama yöntemini kullanın.
log.debug ("- bilgi--");
LogExpert aracı nedir?
- LogExpert aracı, Windows için günlükleri kuyruğa almak için geliştirilmiş bir araçtır
- Ücretsiz ve açık kaynaklı günlük görüntüleyicidir.
- Günlükleri arama, filtreleme, yer imlerine ekleme ve vurgulama gibi birçok özelliğe sahip bir günlük analiz aracıdır.
- Bu araç günlüklerinde, dosyalar açıldığında otomatik olarak güncellenir
- Bu araçta, farklı sekmelerde birden fazla günlük dosyası açabiliriz
- Ayrıca yer imlerine yorum da koyabiliriz ve farklı yer imleri arasında gezinmek için kısayol tuşu vardır. Ayrıca tam yer imi listesini görebilir ve oradan gidebiliriz
- Aracın kısayolları, araca başvurulabilmeleri için yardım dosyasında verilmiştir.
Log4j'yi Selenium ile kullanma adımları
Adım 1) Eclipse'de log4j_demo adıyla yeni bir proje oluşturun
Adım 2) src'ye sağ tıklayın -> Yol Oluştur -> Oluşturma Yolunu Yapılandır
Adım 2) Kitaplıklar'a ve Log4J Kitaplığı Ekle'ye tıklayın. Https://logging.apache.org/log4j/1.2/download.html adresinden indirebilirsiniz.
Adım 3) Yeni bir dosya oluşturun. Bu dosya tüm log4j yapılandırmasını içerecektir
- Src -> Yeni -> Diğer -> Genel -> Dosya'ya sağ tıklayın
- Dosya adını "log4j.properties" olarak verin
- Bitir'e tıklayın
İki dosya daha oluşturun ve bunlara Selenium.logs ve Manual.logs gibi adlar verin. Bu dosyalar, sistem tarafından oluşturulan tüm günlükleri ve manuel olarak kaydedilen ifadeleri içerecektir.
Adım 4) log4j.properties dosyasında tüm yapılandırmayı kopyalayın.
Adım 5) Ana sınıf oluşturun:
- Varsayılan pakete sağ tıklayın -> Yeni -> Sınıf
- Sınıf adını verin ve bitir'e tıklayın
Adım 6) Aşağıdaki kodu ana sınıfa kopyalayın
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 Otomatik oluşturulan yöntem saplamasıWebDriver sürücüsü = yeni FirefoxDriver ();Logger log = Logger.getLogger ("devpinoyLogger");driver.get ("http://healthunify.com/bmicalculator/");log.debug ("webiste açılıyor");driver.manage (). timeouts (). örtük olarak Bekleme (20, TimeUnit.SECONDS);log.debug ("ağırlık girme");driver.findElement (By.name ("wg")). sendKeys ("87");log.debug ("kilogram seçme");driver.findElement (By.name ("opt1")). sendKeys ("kilogram");log.debug ("fit cinsinden yüksekliği seçme");driver.findElement (By.name ("opt2")). sendKeys ("5");log.debug ("inç cinsinden yüksekliği seçme");driver.findElement (By.name ("opt3")). sendKeys ("10");log.debug ("Hesaplamaya tıklama");driver.findElement (By.name ("cc")). tıklayın ();log.debug ("SIUnit değerini alınıyor");String SIUnit = sürücü.findElement (By.name ("si")). GetAttribute ("değer");log.debug ("USUnit değerini alınıyor");String USUnit = driver.findElement (By.name ("us")). GetAttribute ("değer");log.debug ("UKUnit değerini alınıyor");String UKUnit = sürücü.findElement (By.name ("uk")). GetAttribute ("değer");log.debug ("Genel açıklamayı alma");String note = driver.findElement (By.name ("desc")). GetAttribute ("değer");System.out.println ("SIUnit =" + SIUnit);System.out.println ("USUnit =" + USUnit);System.out.println ("UKUnit =" + UKUnit);System.out.println ("note =" + not);driver.quit ();}}
Yukarıdaki kodda, http://healthunify.com/bmicalculator/ adresini ziyaret ediyor ve BMI hesaplayıcısını doğruluyoruz. Girilen ağırlık 87KG ve yükseklik 5 Feet 10 inçtir. Komut dosyası, SE, ABD ve İngiltere birimlerindeki çıktıları kontrol eder.
Logger.getLogger ("devpinoyLogger") kullanarak sistem düzeyinde günlükler oluşturuyoruz
Log.debug yöntemini kullanarak verileri Manual.log'da saklıyoruz
Adım 7) Komut dosyasını çalıştırın. Günlük verilerini kontrol etmek için Manuel ve Selenium günlüklerinin konumunu açın.
LogExpert aracı, günlükleri analiz etmek için nasıl kullanılabilir?
- Aracı http://logexpert.codeplex.com/ adresinden indirin. LogExpert indirme klasörüne gidin
- LogExpert.exe dosyasını açın
- Manual.log ve Selenium.log dosyalarının depolandığı yola Dosya -> Aç ve Gözat seçeneğine tıklayın. Dosyayı seçin
- "Kuyruğu takip et" seçeneğini seçin
Kuyruğu takip et seçeneğinin seçilmesi, günlüklerin takibini etkinleştirir, bu da LogExpert'in komut dosyası yürütme aşamasındayken günlük dosyasını otomatik olarak güncellediği anlamına gelir. Not defteri gibi başka bir düzenleyici kullanırsak, günlükleri güncellemek için dosyayı tekrar tekrar kapatıp yeniden açmamız gerekir. Ancak ExpertTool ile Takip Kuyruğu Modunda bu gerekli değildir.
Aşağıdaki resimler günlüklerin düzenini gösterir
LogExpert aracını kullanarak, selenyum web sürücüsü tarafından oluşturulan günlüklerde bu araçta olduğu gibi hata ayıklanabilir.
- herhangi bir metni ve normal ifadeyi arayın,
- yer imi oluşturun ve bunları yorumlayın ve ayrıca başka hiçbir araçta mümkün olmayan yer imleri arasında gezinebilir,
- Günlükleri filtreleyin ve metin aralıklarını arayın ve ayrıca önceki filtrelenmiş günlüklere başka bir filtre uygulayabilir,
- Bazı kelimelere göre farklı bir satırı vurgulayın.
Bu araç aynı zamanda verileri farklı sütunlara bölmeye yardımcı olur.