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
Patricia Arquetteasal
2025-01-08 20:16:48342semak imbas

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>
...

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());
        }
    }
}

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();
    }
}

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");
    }
}

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!

Kenyataan:
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