קביעת רמת היומן באתחול האביב בעת הבדיקה

1. סקירה כללית

במדריך זה נראה כיצד הגדר את רמת היומן בעת ​​הפעלת בדיקות ליישום Spring Boot.

למרות שאנחנו יכולים בעיקר להתעלם מהיומנים בזמן שהבדיקות שלנו עוברות, בחירה ברמת היומן הנכונה יכולה להיות קריטית אם יש צורך בכך לאבחן בדיקות כושלות.

2. החשיבות של רמת היומן

קביעת תצורה נכונה של רמת היומן יכולה לחסוך לנו זמן רב.

לדוגמא, אם בדיקות נכשלות בשרת CI אך עוברות על מכונת הפיתוח שלנו, לא נוכל לאבחן את הבדיקות הכושלות אלא אם יש לנו מספיק פלט יומן. מצד שני, אם נרשום יותר מדי פרטים, יתכן שיהיה קשה יותר למצוא מידע שימושי.

כדי להשיג את כמות הפרטים הנכונה, אנו יכולים לכוונן את רמות הרישום של חבילות היישום שלנו. אם נגלה שחבילת Java קריטית יותר למבחנים שלנו, נוכל לתת לה רמה נמוכה יותר, כמו לנפות. באופן דומה, כדי למנוע יותר מדי רעש ביומנינו, נוכל להגדיר רמה גבוהה יותר מידע אוֹ שְׁגִיאָה, לחבילות פחות חשובות.

בואו לחקור דרכים שונות לקביעת רמת הרישום.

3. הגדרות כניסה application.properties

אם אנחנו רוצים לשנות את רמת היומן במבחנים שלנו, יש מאפיין שנוכל להגדיר בו src / test / resources /application.properties:

logging.level.com.baeldung.testloglevel = DEBUG

נכס זה יהיה הגדר אתרמת יומן ספציפית בשביל ה com.baeldung.testloglevel חֲבִילָה.

באופן דומה, אנו יכולים לשנות את רמת הרישום עבור כל החבילות על ידי הגדרת רמת יומן השורש:

logging.level.root = מידע

עכשיו, בואו ננסה את הגדרות הרישום שלנו על ידי הוספת נקודת קצה של REST שכותבת כמה יומנים:

@RestController מחלקה ציבורית TestLogLevelController {לוגרית סופית סטטית פרטית LOG = LoggerFactory.getLogger (TestLogLevelController.class); @Autowired פרטי OtherComponent otherComponent; @GetMapping ("/ testLogLevel") ציבורי מחרוזת testLogLevel () {LOG.trace ("זהו יומן TRACE"); LOG.debug ("זהו יומן DEBUG"); LOG.info ("זהו יומן INFO"); LOG.error ("זהו יומן שגיאות"); otherComponent.processData (); להחזיר "הוסיף קצת פלט יומן למסוף ..."; }}

כצפוי, אם נקרא לנקודת סיום זו במבחנים שלנו, נוכל לראות את לנפות יומנים מ TestLogLevelController:

2019-04-01 14: 08: 27.545 DEBUG 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: זהו יומן DEBUG 2019-04-01 14: 08: 27.545 INFO 56585 --- [ nio-8080-exec-1] cbtestloglevel.TestLogLevelController: זהו יומן INFO 2019-04-01 14: 08: 27.546 שגיאה 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: זהו יומן שגיאות 01-04-2019 14: 08: 27.546 INFO 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: זהו יומן INFO מחבילה אחרת 2019-04-01 14: 08: 27.546 שגיאה 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: זהו יומן שגיאה מחבילה אחרת 

קביעת רמת היומן כזו היא די קלה, ואנחנו בהחלט צריכים לעשות את זה ככה אם הבדיקות שלנו מוסברות @ SpringBootTest. עם זאת, אם לא נשתמש בהערה זו, נצטרך להגדיר את רמת היומן בצורה אחרת.

3.1. הגדרות רישום מבוסס פרופיל

למרות שמכניסים את ההגדרות ל src / test / application.properties יעבוד את זה ברוב המצבים, יתכנו מקרים שבהם נרצה יש הגדרות שונות לבדיקה אחת או לקבוצת מבחנים.

במקרה הזה, אנחנו יכולים להוסיף פרופיל אביב למבחן שלנו באמצעות ActiveProfiles ביאור:

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

הגדרות הרישום שלנו יהיו במבצע מיוחד יישומי רישום- test.properties קובץ בתוך src / test / resources:

logging.level.com.baeldung.testloglevel = TRACE logging.level.root = שגיאה

אם נתקשר TestLogLevelController מהבדיקות שלנו עם ההגדרות המתוארות, נראה כעת את זֵכֶר יומני הבקר שלנו, ולא יהיו יותר מידע יומני חבילות אחרות:

2019-04-01 14: 08: 27.545 DEBUG 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: זהו יומן DEBUG 2019-04-01 14: 08: 27.545 INFO 56585 --- [ nio-8080-exec-1] cbtestloglevel.TestLogLevelController: זהו יומן INFO 2019-04-01 14: 08: 27.546 שגיאה 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: זהו יומן שגיאות 2019-04-01 14: 08: 27.546 שגיאה 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: זהו יומן שגיאה מחבילה אחרת

4. קביעת תצורה של Logback

אם אנו משתמשים ב- Logback, המשמש כברירת מחדל ב- Spring Boot, נוכל לעשות זאת הגדר את רמת היומן ב- logback-test.xml קוֹבֶץ בְּתוֹך src / test / resources:

    % d {HH: mm: ss.SSS} [% thread]% -5 רמה% לוגר {36} -% msg% n 

הדוגמה שלעיל מראה כיצד להגדיר את רמת היומן בתצורת ה- Logback שלנו לבדיקות. רמת יומן השורש מוגדרת ל- מידע ורמת היומן שלנו com.baeldung.testloglevel החבילה מוגדרת ל לנפות.

שוב, בואו נבדוק את הפלט לאחר החלת ההגדרות מלמעלה:

2019-04-01 14: 08: 27.545 DEBUG 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: זהו יומן DEBUG 2019-04-01 14: 08: 27.545 INFO 56585 --- [ nio-8080-exec-1] cbtestloglevel.TestLogLevelController: זהו יומן INFO 2019-04-01 14: 08: 27.546 שגיאה 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: זהו יומן שגיאות 01-04-2019 14: 08: 27.546 INFO 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: זהו יומן INFO מחבילה אחרת 2019-04-01 14: 08: 27.546 שגיאה 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: זהו יומן שגיאה מחבילה אחרת 

4.1. תצורת כניסה חוזרת מבוססת פרופיל

דרך נוספת להגדיר תצורה ספציפית לפרופיל כי המבחנים שלנו הם להגדיר את logging.config נכס ב application.properties לפרופיל שלנו:

logging.config = classpath: logback-testloglevel.xml

או, עוד אחד, תגיד אם ברצוננו לקבל תצורת Logback יחידה בשביל הכיתה שלנו, הוא להשתמש ב אביב פרופיל אלמנט ב logback.xml:

    % d {HH: mm: ss.SSS} [% thread]% -5 רמה% לוגר {36} -% msg% n 

עכשיו, אם נקרא TestLogLevelController במבחנים שלנו עם הפרופיל מבחן logback 1, נקבל את הפלט הבא:

2019-04-01 14: 08: 27.545 INFO 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: זהו יומן INFO 2019-04-01 14: 08: 27.546 שגיאה 56585 --- [ nio-8080-exec-1] cbtestloglevel.TestLogLevelController: זהו יומן שגיאות 2019-04-01 14: 08: 27.546 מידע 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: זהו יומן מידע מחבילה אחרת 2019-04-01 14: 08: 27.546 שגיאה 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: זהו יומן שגיאה מחבילה אחרת 

מצד שני, אם נשנה את הפרופיל ל מבחן logback 2, הפלט יהיה:

2019-04-01 14: 08: 27.545 DEBUG 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: זהו יומן DEBUG 2019-04-01 14: 08: 27.545 INFO 56585 --- [ nio-8080-exec-1] cbtestloglevel.TestLogLevelController: זהו יומן INFO 2019-04-01 14: 08: 27.546 שגיאה 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: זהו יומן שגיאות 01-04-2019 14: 08: 27.546 INFO 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: זהו יומן INFO מחבילה אחרת 2019-04-01 14: 08: 27.546 שגיאה 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: זהו יומן שגיאה מחבילה אחרת 

5. חלופת Log4J

לחלופין, אם אנו משתמשים ב- Log4J2, נוכל לעשות זאת הגדר את רמת היומן ב- log4j2-spring.xml קוֹבֶץ בְּתוֹך src / test / resources:

אנחנו יכולים לקבוע את הדרך שלנו Log4J תצורה על ידי הגדרת ה- logging.config נכס ב application.properties:

logging.config = classpath: log4j-testloglevel.xml

לבסוף, בואו לבדוק את הפלט לאחר החלת ההגדרות שלעיל:

2019-04-01 14: 08: 27.545 DEBUG 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: זהו יומן DEBUG 2019-04-01 14: 08: 27.545 INFO 56585 --- [ nio-8080-exec-1] cbtestloglevel.TestLogLevelController: זהו יומן INFO 2019-04-01 14: 08: 27.546 שגיאה 56585 --- [nio-8080-exec-1] cbtestloglevel.TestLogLevelController: זהו יומן שגיאות 01-04-2019 14: 08: 27.546 INFO 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: זהו יומן INFO מחבילה אחרת 2019-04-01 14: 08: 27.546 שגיאה 56585 --- [nio-8080-exec-1] cbcomponent.OtherComponent: זהו יומן שגיאה מחבילה אחרת 

6. מסקנה

במאמר זה למדנו כיצד להגדיר את רמת היומן בעת ​​בדיקת יישום Spring Boot. בדקנו מספר דרכים שונות להגדרת תצורה.

הגדרת רמת היומן ב- Spring Boot's application.properties הראה את עצמו כקל ביותר, במיוחד כאשר אנו משתמשים ב- @ SpringBootTest ביאור.

כמו תמיד, קוד המקור של דוגמאות אלה הסתיים ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found