A naplószint beállítása a tavaszi indításkor teszteléskor

1. Áttekintés

Ebben az oktatóanyagban megmutatjuk, hogyan kell állítsa be a naplószintet a Spring Boot alkalmazás tesztjeinek futtatásakor.

Bár tesztjeink teljesítése során többnyire figyelmen kívül hagyhatjuk a naplókat, a megfelelő naplószint kiválasztása kritikus lehet, ha szükséges a sikertelen tesztek diagnosztizálása.

2. A naplószint fontossága

A naplószint megfelelő beállítása sok időt takaríthat meg nekünk.

Például, ha a tesztek sikertelenek egy CI-kiszolgálón, de továbbadják a fejlesztő gépünket, csak akkor tudunk diagnosztizálni a sikertelen teszteket, ha van elegendő napló kimenet. Másrészt, ha túl sok részletet naplózunk, nehezebb lehet hasznos információkat találni.

A megfelelő részletesség elérése érdekében finomhangolhatjuk alkalmazásunk csomagjainak naplózási szintjét. Ha azt találjuk, hogy egy Java csomag kritikusabb a tesztjeink szempontjából, akkor alacsonyabb szintet adhatunk neki, mint például HIBÁK. Hasonlóképpen, hogy elkerüljük a túl sok zajt a naplóinkban, konfigurálhatunk egy magasabb szintet, mondjuk INFO vagy HIBA, kevésbé fontos csomagokhoz.

Fedezzük fel a naplózási szint beállításának különböző módjait.

3. Naplózási beállítások alkalmazás.tulajdonságok

Ha akarjuk módosítsa a naplószintet tesztjeink során van egy tulajdonság, amelyet beállíthatunk src / test / resources /alkalmazás.tulajdonságok:

logging.level.com.baeldung.testloglevel = HIBÁK

Ez a tulajdonság állítsa be alog szinten kifejezetten a com.baeldung.testloglevel csomag.

Hasonlóképpen az összes csomag naplózási szintjét megváltoztathatjuk a a gyökérnapló szintjének beállítása:

naplózás.szint.gyökér = INFO

Most próbáljuk ki a naplózási beállításokat egy REST végpont hozzáadásával, amely néhány naplót ír:

@RestController nyilvános osztály TestLogLevelController {private static final Logger LOG = LoggerFactory.getLogger (TestLogLevelController.class); @Autowired private OtherComponent otherComponent; @GetMapping ("/ testLogLevel") public String testLogLevel () {LOG.trace ("Ez egy TRACE napló"); LOG.debug ("Ez egy DEBUG napló"); LOG.info ("Ez egy INFO napló"); LOG.error ("Ez egy ERROR napló"); otherComponent.processData (); return "Hozzáadott néhány napló kimenetet a konzolhoz ..."; }}

A várakozásoknak megfelelően, ha ezt a végpontot hívjuk tesztjeink során, megnézhetjük a HIBÁK naplók tól től TestLogLevelController:

2019-04-01 14: 08: 27.545 DEBUG 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ez egy DEBUG napló 2019-04-01 14: 08: 27.545 INFO 56585 --- [ nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ez egy INFO napló 2019-04-01 14: 08: 27.546 HIBA 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ez egy HIBA napló 2019-04-01 14: 08: 27.546 INFO 56585 --- [nio-8080-exec-1] cbcomponent. OtherComponent: Ez egy INFO napló egy másik csomagból 2019-04-01 14: 08: 27.546 HIBA 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: Ez egy másik csomag ERROR-naplója 

Az ilyen naplózási szint beállítása meglehetősen egyszerű, és feltétlenül ezt kell tennünk, ha a tesztjeinket feljegyezzük @SpringBootTest. Ha azonban nem használjuk ezt a kommentárt, akkor a naplószintet más módon kell konfigurálnunk.

3.1. Profil alapú naplózási beállítások

Bár a beállításokat beteszem src / test / application.properties működne a legtöbb helyzetben, lehetnek esetek, amikor szeretnénk különböző beállításokkal rendelkezik egy teszt vagy egy tesztcsoport számára.

Ebben az esetben, hozzáadhatunk egy Spring profilt a tesztünkhöz a ActiveProfiles kommentár:

@RunWith (SpringRunner.class) @SpringBootTest (webEnvironment = WebEnvironment.RANDOM_PORT, class = TestLogLevelApplication.class) @EnableAutoConfiguration (kizárja = SecurityAutoConfiguration.class) @ActiveProfiles ("logging-test "IlevelesTeszt_Teszt") nyilvános osztályteszt

A naplózási beállítások ezután egy különlegessé válnak application-logging-test.properties fájl belül src / test / resources:

logging.level.com.baeldung.testloglevel = TRACE logging.level.root = HIBA

Ha hívunk TestLogLevelController a leírt beállításokkal végzett tesztjeinkből most meglátjuk a NYOM naplóz a vezérlőnktől, és nem lesz több INFO naplók más csomagokból:

2019-04-01 14: 08: 27.545 DEBUG 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ez egy DEBUG napló 2019-04-01 14: 08: 27.545 INFO 56585 --- [ nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ez egy INFO napló 2019-04-01 14: 08: 27.546 HIBA 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ez egy ERROR log 2019-04-01 14: 08: 27.546 ERROR 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: Ez egy másik csomag ERROR-naplója

4. A visszacsatolás beállítása

Ha a Logback alkalmazást használjuk, amelyet alapértelmezés szerint használ a Spring Boot, akkor megtehetjük állítsa be a naplószintet a logback-test.xml fájl belül src / test / resources:

    % d {HH: mm: ss.SSS} [% thread]% -5level% logger {36} -% msg% n 

A fenti példa bemutatja, hogyan állíthatjuk be a naplószintet a Visszaállítás konfigurációban a tesztekhez. A gyökérnapló szintje INFO és a naplószint a mi com.baeldung.testloglevel csomag beállítása HIBÁK.

Ismét ellenőrizzük a kimenetet a fenti beállítások alkalmazása után:

2019-04-01 14: 08: 27.545 DEBUG 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ez egy DEBUG napló 2019-04-01 14: 08: 27.545 INFO 56585 --- [ nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ez egy INFO napló 2019-04-01 14: 08: 27.546 HIBA 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ez egy HIBA napló 2019-04-01 14: 08: 27.546 INFO 56585 --- [nio-8080-exec-1] cbcomponent. OtherComponent: Ez egy INFO napló egy másik csomagból 2019-04-01 14: 08: 27.546 HIBA 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: Ez egy másik csomag ERROR-naplója 

4.1. Profil alapú visszacsatolási konfiguráció

Egy másik módja annak állítson be egy profilspecifikus konfigurációt mert tesztjeink célja a naplózás.config ingatlan in alkalmazás.tulajdonságok profilunkhoz:

logging.config = classpath: logback-testloglevel.xml

Vagy, még egy, mondjuk ha egyetlen Logback konfigurációt szeretnénk elérni az osztályúton, az springProfile elem be logback.xml:

    % d {HH: mm: ss.SSS} [% thread]% -5level% logger {36} -% msg% n 

Most, ha hívjuk a TestLogLevelController a profilunkkal végzett tesztjeinkben logback-teszt1, a következő kimenetet kapjuk:

2019-04-01 14: 08: 27.545 INFO 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ez egy INFO napló 2019-04-01 14: 08: 27.546 HIBA 56585 --- [ nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ez egy ERROR napló 2019-04-01 14: 08: 27.546 INFO 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: Ez egy INFO napló egy másik csomagból 2019-04-01 14: 08: 27.546 ERROR 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: Ez egy másik csomag ERROR naplója 

Másrészt ha megváltoztatjuk a profilt logback-test2, a kimenet a következő lesz:

2019-04-01 14: 08: 27.545 DEBUG 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ez egy DEBUG napló 2019-04-01 14: 08: 27.545 INFO 56585 --- [ nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ez egy INFO napló 2019-04-01 14: 08: 27.546 HIBA 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ez egy HIBA napló 2019-04-01 14: 08: 27.546 INFO 56585 --- [nio-8080-exec-1] cbcomponent. OtherComponent: Ez egy INFO napló egy másik csomagból 2019-04-01 14: 08: 27.546 HIBA 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: Ez egy másik csomag ERROR-naplója 

5. Log4J alternatíva

Alternatív megoldásként, ha Log4J2-t használunk, akkor megtehetjük állítsa be a naplószintet a log4j2-spring.xml fájl belül src / test / resources:

Meg tudjuk szabni az utunkat Log4J konfigurálása a naplózás.config ingatlan in alkalmazás.tulajdonságok:

logging.config = classpath: log4j-testloglevel.xml

Végül ellenőrizzük a kimenetet a fenti beállítások alkalmazása után:

2019-04-01 14: 08: 27.545 DEBUG 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ez egy DEBUG napló 2019-04-01 14: 08: 27.545 INFO 56585 --- [ nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ez egy INFO napló 2019-04-01 14: 08: 27.546 HIBA 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ez egy HIBA napló 2019-04-01 14: 08: 27.546 INFO 56585 --- [nio-8080-exec-1] cbcomponent. OtherComponent: Ez egy INFO napló egy másik csomagból 2019-04-01 14: 08: 27.546 HIBA 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: Ez egy másik csomag ERROR-naplója 

6. Következtetés

Ebben a cikkben megtanultuk hogyan állítsd be a naplószintet a Spring Boot alkalmazás tesztelésekor. Számos különböző módszert tártunk fel konfigurálásához.

A naplószint beállítása a Spring Boot's-ban alkalmazás.tulajdonságok a legkönnyebbnek mutatta magát, különösen akkor, ha a @SpringBootTest annotáció.

Mint mindig, ezeknek a példáknak a forráskódja is befejeződött a GitHubon.