Postavljanje razine dnevnika u proljetnom pokretanju prilikom testiranja

1. Pregled

U ovom uputstvu pokazat ćemo kako postavite razinu dnevnika prilikom izvođenja testova za aplikaciju Spring Boot.

Iako uglavnom možemo zanemariti zapisnike dok naši testovi prolaze, odabir prave razine dnevnika može biti presudan ako postoji potreba za dijagnosticirati neuspjele testove.

2. Važnost razine dnevnika

Pravilna konfiguracija razine dnevnika može nam uštedjeti puno vremena.

Na primjer, ako testovi ne uspiju na CI poslužitelju, ali prenose naš razvojni stroj, nećemo moći dijagnosticirati neuspjele testove ako nemamo dovoljno rezultata iz dnevnika. S druge strane, ako prijavimo previše detalja, možda će biti teže pronaći korisne informacije.

Da bismo postigli pravu količinu detalja, možemo fino prilagoditi razine zapisivanja paketa naše aplikacije. Ako utvrdimo da je Java paket kritičniji za naše testove, možemo mu dati nižu razinu, poput DEBUG. Slično tome, kako bismo izbjegli previše šuma u svojim zapisnicima, možemo konfigurirati višu razinu, recimo INFO ili POGREŠKA, za pakete koji su manje važni.

Istražimo razne načine postavljanja razine bilježenja.

3. Postavke prijave u primjena.svojstva

Ako želimo izmijeniti razinu dnevnika u našim testovima postoji svojstvo koje možemo postaviti src / test / resources /primjena.svojstva:

logging.level.com.baeldung.testloglevel = DEBUG

Ovo svojstvo će Postavilog level posebno za com.baeldung.testloglevel paket.

Slično tome, možemo promijeniti razinu evidentiranja za sve pakete pomoću postavljanje razine korijenskog dnevnika:

logging.level.root = INFO

Sada, isprobajmo naše postavke evidentiranja dodavanjem REST krajnje točke koja zapisuje neke zapisnike:

@RestController javna klasa TestLogLevelController {private static final Logger LOG = LoggerFactory.getLogger (TestLogLevelController.class); @Autowired private OtherComponent otherComponent; @GetMapping ("/ testLogLevel") javni niz testLogLevel () {LOG.trace ("Ovo je zapis TRACE-a"); LOG.debug ("Ovo je zapisnik DEBUG"); LOG.info ("Ovo je INFO zapisnik"); LOG.error ("Ovo je dnevnik pogrešaka"); otherComponent.processData (); return "Dodan je neki izlaz iz dnevnika na konzolu ..."; }}

Kao što se očekivalo, ako u našim testovima pozovemo ovu krajnju točku, moći ćemo vidjeti DEBUG trupci iz TestLogLevelController:

2019-04-01 14: 08: 27.545 DEBUG 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ovo je zapisnik DEBUG-a 2019-04-01 14: 08: 27.545 INFO 56585 --- [ nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ovo je INFO zapisnik 2019-04-01 14: 08: 27.546 POGREŠKA 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ovo je an Dnevnik POGREŠKE 2019-04-01 14: 08: 27.546 INFO 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: Ovo je INFO zapisnik iz drugog paketa 2019-04-01 14: 08: 27.546 POGREŠKA 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: Ovo je zapisnik GREŠKE iz drugog paketa 

Ovakvo postavljanje razine dnevnika prilično je jednostavno i svakako bismo to trebali učiniti ako su naši testovi označeni @SpringBootTest. Međutim, ako ne koristimo tu napomenu, morat ćemo konfigurirati razinu dnevnika na drugačiji način.

3.1. Postavke zapisivanja temeljene na profilu

Iako stavljanje postavki u src / test / application.properties to bi uspjelo u većini situacija, možda postoje slučajevi u kojima bismo to željeli imaju različite postavke za jedan test ili grupu testova.

U tom slučaju, našem testu možemo dodati profil Spring pomoću ActiveProfili napomena:

@RunWith (SpringRunner.class) @SpringBootTest (webEnvironment = WebEnvironment.RANDOM_PORT, classes = TestLogLevelApplication.class) @EnableAutoConfiguration (exclude = SecurityAutoConfiguration.class) @ActiveProfiles {test class-W

Naše postavke evidentiranja tada će biti u posebnom prijava- prijavljivanje- test.obilježja datoteka unutar src / test / resources:

logging.level.com.baeldung.testloglevel = TRACE logging.level.root = GREŠKA

Ako nazovemo TestLogLevelController iz naših testova s ​​opisanim postavkama, sada ćemo vidjeti TRAG zapisnike s našeg kontrolera i više ih neće biti INFO zapisnici iz ostalih paketa:

2019-04-01 14: 08: 27.545 DEBUG 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ovo je zapisnik DEBUG-a 2019-04-01 14: 08: 27.545 INFO 56585 --- [ nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ovo je INFO zapisnik 2019-04-01 14: 08: 27.546 POGREŠKA 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ovo je an Dnevnik POGREŠKE 2019-04-01 14: 08: 27.546 POGREŠKA 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: Ovo je zapisnik GREŠKE iz drugog paketa

4. Konfiguriranje prijave

Ako koristimo Logback, koji se prema zadanim postavkama koristi u Spring Boot-u, možemo postaviti razinu dnevnika u logback-test.xml datoteka unutar src / test / resources:

    % d {HH: mm: ss.SSS} [% nit]% -5 nivo% zapisnika {36} -% msg% n 

Gornji primjer pokazuje kako postaviti testove u razinu konfiguracije prijave. Korijenska razina dnevnika postavljena je na INFO i razina dnevnika za naš com.baeldung.testloglevel paket je postavljen na DEBUG.

Opet, provjerimo izlaz nakon primjene postavki odozgo:

2019-04-01 14: 08: 27.545 DEBUG 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ovo je zapisnik DEBUG-a 2019-04-01 14: 08: 27.545 INFO 56585 --- [ nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ovo je INFO zapisnik 2019-04-01 14: 08: 27.546 POGREŠKA 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ovo je an Dnevnik POGREŠKE 2019-04-01 14: 08: 27.546 INFO 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: Ovo je INFO zapisnik iz drugog paketa 2019-04-01 14: 08: 27.546 POGREŠKA 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: Ovo je zapisnik GREŠKE iz drugog paketa 

4.1. Konfiguracija povratne prijave temeljena na profilu

Drugi način da postaviti konfiguraciju specifičnu za profil za naša ispitivanja je postaviti sječa.konfig nekretnina u primjena.svojstva za naš profil:

logging.config = put do klase: logback-testloglevel.xml

Ili, još jedno, recimo ako želimo imati jednu konfiguraciju prijave na našoj stazi, je koristiti springProfile element u logback.xml:

    % d {HH: mm: ss.SSS} [% nit]% -5 nivo% zapisnika {36} -% msg% n 

Sada, ako pozovemo TestLogLevelController u našim testovima s profilom prijava-test1, dobit ćemo sljedeći izlaz:

2019-04-01 14: 08: 27.545 INFO 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ovo je INFO zapisnik 2019-04-01 14: 08: 27.546 POGREŠKA 56585 --- [ nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ovo je zapisnik GREŠKE 2019-04-01 14: 08: 27.546 INFO 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: Ovo je INFO zapis iz drugog paketa 2019-04-01 14: 08: 27.546 POGREŠKA 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: Ovo je zapisnik GREŠKE iz drugog paketa 

S druge strane, Ako promijenimo profil u prijava-test2, izlaz će biti:

2019-04-01 14: 08: 27.545 DEBUG 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ovo je zapisnik DEBUG-a 2019-04-01 14: 08: 27.545 INFO 56585 --- [ nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ovo je INFO zapisnik 2019-04-01 14: 08: 27.546 POGREŠKA 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ovo je an Dnevnik POGREŠKE 2019-04-01 14: 08: 27.546 INFO 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: Ovo je INFO zapisnik iz drugog paketa 2019-04-01 14: 08: 27.546 POGREŠKA 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: Ovo je zapisnik GREŠKE iz drugog paketa 

5. Alternativa Log4J

Ako koristimo Log4J2, možemo postaviti razinu dnevnika u log4j2-spring.xml datoteka unutar src / test / resources:

Možemo postaviti put našeg Log4J konfiguraciju postavljanjem sječa.konfig nekretnina u primjena.svojstva:

logging.config = put do klase: log4j-testloglevel.xml

Napokon, provjerimo izlaz nakon primjene gornjih postavki:

2019-04-01 14: 08: 27.545 DEBUG 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ovo je zapisnik DEBUG-a 2019-04-01 14: 08: 27.545 INFO 56585 --- [ nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ovo je INFO zapisnik 2019-04-01 14: 08: 27.546 POGREŠKA 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: Ovo je an Dnevnik POGREŠKE 2019-04-01 14: 08: 27.546 INFO 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: Ovo je INFO zapisnik iz drugog paketa 2019-04-01 14: 08: 27.546 POGREŠKA 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: Ovo je zapisnik GREŠKE iz drugog paketa 

6. Zaključak

U ovom smo članku naučili kako postaviti razinu dnevnika prilikom testiranja aplikacije Spring Boot. Istražili smo nekoliko različitih načina konfiguriranja.

Postavljanje razine dnevnika u Spring Boot-u primjena.svojstva pokazao se kao najlakši, pogotovo kada koristimo @SpringBootTest bilješka.

Kao i uvijek, izvorni kod za ove primjere je gotov na GitHubu.