TestNG ile Log4j Kullanımı
🔍 Giriş
Section titled “🔍 Giriş”TestNG, testlerin yürütülmesini kontrol ederken, Log4j ise test çıktılarının anlamlı ve yönetilebilir loglara dönüştürülmesini sağlar.
Bu entegrasyon sayesinde:
- Hataların takibi kolaylaşır
- Test süreci boyunca neler olduğunu adım adım görebilirsiniz
- Konsol çıktısı yerine dosyaya log alabilirsiniz
⚙️ Log4j Nedir?
Section titled “⚙️ Log4j Nedir?”Log4j, Apache tarafından geliştirilen güçlü bir loglama (kayıt tutma) aracıdır.
Java uygulamalarında yaygın olarak kullanılır ve test otomasyon projelerinde özellikle hata analizi için çok değerlidir.
🧩 TestNG ile Log4j Entegrasyonu Adımları
Section titled “🧩 TestNG ile Log4j Entegrasyonu Adımları”1️⃣ Log4j Bağımlılığını Ekle
Section titled “1️⃣ Log4j Bağımlılığını Ekle”Eğer Maven kullanıyorsan, pom.xml içine aşağıdaki bağımlılığı ekle:
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version></dependency>💡 Alternatif olarak Log4j2 kullanmak istersen:
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.22.0</version></dependency>2️⃣ log4j.properties Dosyası Oluştur
Section titled “2️⃣ log4j.properties Dosyası Oluştur”Kaynak klasörüne (src/test/resources) şu dosyayı ekle:
log4j.rootLogger=INFO, FILE, CONSOLE
# Konsola loglamalog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlog4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayoutlog4j.appender.CONSOLE.layout.ConversionPattern=%d{HH:mm:ss} [%t] %-5p %c - %m%n
# Dosyaya loglamalog4j.appender.FILE=org.apache.log4j.FileAppenderlog4j.appender.FILE.File=logs/test-log.loglog4j.appender.FILE.Append=truelog4j.appender.FILE.layout=org.apache.log4j.PatternLayoutlog4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n3️⃣ Test Sınıfında Log4j Kullanımı
Section titled “3️⃣ Test Sınıfında Log4j Kullanımı”import org.testng.annotations.Test;import org.apache.log4j.Logger;
public class Log4jExampleTest {
private static final Logger logger = Logger.getLogger(Log4jExampleTest.class);
@Test public void loginTest() { logger.info("Test başlatılıyor: loginTest"); try { logger.debug("Kullanıcı adı giriliyor"); logger.debug("Şifre giriliyor"); logger.info("Login butonuna tıklanıyor");
int result = 10 / 0;
} catch (Exception e) { logger.error("Bir hata oluştu: " + e.getMessage()); } logger.info("Test tamamlandı: loginTest"); }}🧠 Log Seviyeleri
Section titled “🧠 Log Seviyeleri”| Seviye | Açıklama |
|---|---|
| TRACE | En detaylı log. Genelde debug için. |
| DEBUG | Geliştirici adımlarını gösterir. |
| INFO | Genel test akışı bilgisini verir. |
| WARN | Potansiyel problem uyarısı. |
| ERROR | Hata durumları. |
| FATAL | Kritik hata, genelde testin durduğu an. |
📄 Örnek Log Çıktısı
Section titled “📄 Örnek Log Çıktısı”10:45:31 [main] INFO Log4jExampleTest - Test başlatılıyor: loginTest10:45:31 [main] DEBUG Log4jExampleTest - Kullanıcı adı giriliyor10:45:31 [main] DEBUG Log4jExampleTest - Şifre giriliyor10:45:31 [main] INFO Log4jExampleTest - Login butonuna tıklanıyor10:45:31 [main] ERROR Log4jExampleTest - Bir hata oluştu: / by zero10:45:31 [main] INFO Log4jExampleTest - Test tamamlandı: loginTest✅ Sonuç
Section titled “✅ Sonuç”TestNG ve Log4j birlikte kullanıldığında:
- Hatalar kolay analiz edilir
- Raporlama daha anlamlı hale gelir
- Test çıktısı hem konsolda hem dosyada tutulur
Bu yapı, özellikle büyük çaplı test otomasyon projelerinde güvenilir loglama için önerilen standarttır.
📁 Önerilen Dosya Yapısı
Section titled “📁 Önerilen Dosya Yapısı”/src ├── /test │ ├── /java │ │ └── tests │ │ └── Log4jExampleTest.java │ └── /resources │ └── log4j.properties └── pom.xml/logs └── test-log.log