Rumah > Java > javaTutorial > Menangkap dan Menguji Log dalam Java dengan SLFand Logback: Panduan Mudah

Menangkap dan Menguji Log dalam Java dengan SLFand Logback: Panduan Mudah

Patricia Arquette
Lepaskan: 2025-01-08 20:16:48
asal
294 orang telah melayarinya

Capturing and Testing Logs in Java with SLFand Logback: A Simple Guide

Apabila bekerja pada projek Java, pengelogan ialah alat penting untuk nyahpepijat dan memahami gelagat aplikasi. Dalam sesetengah kes, anda mungkin mahu menulis ujian yang mengesahkan mesej log tertentu dihasilkan dalam keadaan tertentu. Berikut ialah panduan mudah untuk mencapainya menggunakan SLF4J dengan Log Balik dan TestLogAppender tersuai.

Menyediakan Contoh

Kami akan membuat perkhidmatan asas yang mencatat ralat apabila pengecualian berlaku dan ujian yang sepadan untuk mengesahkan mesej log.

Langkah 1: Tambah Ketergantungan Ujian Log Balik

...
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <scope>test</scope>
</dependency>
...
Salin selepas log masuk

Langkah 2: Melaksanakan Perkhidmatan

Berikut ialah perkhidmatan ringkas yang menangkap pengecualian dan mencatat ralat:

package com.example.loggingdemo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class SimpleService {
    private static final Logger logger = LoggerFactory.getLogger(SimpleService.class);

    public void performTask() {
        try {
            // Simulate some task that fails
            throw new IllegalArgumentException("Simulated exception");
        } catch (IllegalArgumentException e) {
            logger.error("An error occurred: {}", e.getMessage());
        }
    }
}
Salin selepas log masuk

Langkah 3: Mencipta TestLogAppender Tersuai

Pelampir ini menangkap mesej log semasa ujian, membolehkan penegasan pada kandungannya.

package com.example.loggingdemo;

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase;

public class TestLogAppender extends AppenderBase<ILoggingEvent> {
    private final StringBuilder logs = new StringBuilder();

    @Override
    protected void append(ILoggingEvent eventObject) {
        logs.append(eventObject.getFormattedMessage()).append("
");
    }

    public String getLogs() {
        return logs.toString();
    }
}
Salin selepas log masuk

Langkah 4: Menulis Ujian

Sekarang, mari tulis ujian untuk mengesahkan output log.

package com.example.loggingdemo;

import static org.assertj.core.api.Assertions.assertThat;

import ch.qos.logback.classic.Logger;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.slf4j.LoggerFactory;

public class SimpleServiceTest {
    private TestLogAppender logAppender;
    private SimpleService simpleService;

    @BeforeEach
    public void setup() {
        // Attach TestLogAppender to the logger
        logAppender = new TestLogAppender();
        logAppender.start();
        Logger logger = (Logger) LoggerFactory.getLogger(SimpleService.class);
        logger.addAppender(logAppender);

        // Initialize the service
        simpleService = new SimpleService();
    }

    @Test
    public void testPerformTaskLogsError() {
        // Act
        simpleService.performTask();

        // Assert
        String logs = logAppender.getLogs();
        assertThat(logs).contains("An error occurred: Simulated exception");
    }
}
Salin selepas log masuk

Penting
Jangan lupa mulakan lampiran log anda!

Langkah 5: Menjalankan Ujian

Apabila anda menjalankan ujian ini, ia akan mengesahkan bahawa SimpleService mencatatkan mesej ralat yang dijangkakan apabila pengecualian berlaku.

Bagaimana Ia Berfungsi

  • Pelampir Tersuai: TestLogAppender menangkap mesej log dengan mengatasi kaedah tambahan AppenderBase Logback.
  • Konfigurasi Logger: Semasa ujian, kami melampirkan penambah tersuai secara dinamik pada pembalak sasaran.
  • Penegasan pada Log: Gunakan log yang ditangkap untuk penegasan dalam ujian anda, mengesahkan mesej atau corak tertentu.

Kesimpulan

Dengan pendekatan ini, anda boleh menguji tingkah laku pengelogan anda dengan yakin, memastikan aplikasi anda merekodkan peristiwa dan ralat penting seperti yang dijangkakan. Persediaan ini serba boleh dan boleh disesuaikan dengan senario yang lebih kompleks, seperti menguji tahap log atau pemformatan mesej.

Jangan ragu untuk mencuba ini dan menyesuaikannya dengan projek anda sendiri!

Selamat pengekodan!

Atas ialah kandungan terperinci Menangkap dan Menguji Log dalam Java dengan SLFand Logback: Panduan Mudah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan