מדריך להתחברות

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

Logback היא אחת ממסגרות הרישום הנפוצות ביותר בקהילת Java. זה תחליף לקודמו, Log4j. Logback מציע יישום מהיר יותר מ- Log4j, מספק אפשרויות תצורה רבות יותר וגמישות רבה יותר בארכיון קבצי יומן רישום ישנים.

מבוא זה יציג את הארכיטקטורה של Logback ויראה לך כיצד תוכל להשתמש בה כדי לשפר את היישומים שלך.

2. ארכיטקטורת לוגבק

שלוש כיתות כוללות ארכיטקטורת לוגבק; כּוֹרֵת עֵצִים, חוטב, ו מַעֲרָך.

לוגר הוא הקשר להודעות יומן. זה הכיתה שאפליקציות מקיימות איתה קשר ליצירת הודעות יומן.

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

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

3. התקנה

3.1. תלות של Maven

Logback משתמש בחזית הרישום הפשוטה עבור Java (SLF4J) כממשק המקורי שלה. לפני שנוכל להתחיל לרשום הודעות, עלינו להוסיף את Logback ו- Slf4j ל- שלנו pom.xml:

 ch.qos.logback logback-core 1.2.3 org.slf4j slf4j-api 1.7.30 מבחן 

ל- Maven Central יש את הגרסה האחרונה של ליבת Logback ואת הגרסה האחרונה של slf4j-api.

3.2. מסלול כיתה

Logback גם דורש logback-classic.jar על מסלול הכיתה לזמן ריצה.

נוסיף את זה ל pom.xml כתלות בבדיקה:

 ch.qos.logback logback-classic 1.2.3 

4. דוגמה בסיסית ותצורה

נתחיל בדוגמה מהירה לשימוש ב- Logback ביישום.

ראשית, אנו זקוקים לקובץ תצורה. ניצור קובץ טקסט בשם logback.xml ושם את זה איפשהו בדרכי הכיתה שלנו:

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

לאחר מכן, אנו זקוקים לשיעור פשוט עם א רָאשִׁי שיטה:

מחלקה ציבורית דוגמה {לוגר לוגר לוגרי סופי פרטי = LoggerFactory.getLogger (דוגמה.קלאס); main public static void (String [] args) {logger.info ("דוגמת יומן מ- {}", Example.class.getSimpleName ()); }}

כיתה זו יוצרת א כּוֹרֵת עֵצִים ושיחות מידע () כדי ליצור הודעת יומן.

כשאנחנו רצים דוגמא אנו רואים את ההודעה שלנו מחוברת למסוף:

20: 34: 22.136 [ראשי] INFO דוגמה - יומן דוגמה מהדוגמה

קל להבין מדוע לוגבק כה פופולרי; אנחנו פועלים תוך מספר דקות.

תצורה וקוד זה נותנים לנו כמה רמזים כיצד זה עובד.

  1. יש לנו appender נקרא STDOUT שמתייחס לשם כיתה ConsoleAppender.
  2. יש דפוס שמתאר את הפורמט של הודעת היומן שלנו.
  3. הקוד שלנו יוצר a כּוֹרֵת עֵצִים והעברנו את המסר שלנו אליו באמצעות מידע () שיטה.

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

5. כּוֹרֵת עֵצִים הקשרים

5.1. יצירת הקשר

כדי לרשום הודעה ל- Logback, אתחלנו את a כּוֹרֵת עֵצִים מ- SLF4J או Logback:

לוגר לוגר לוגר סופי סטטי פרטי = LoggerFactory.getLogger (דוגמה.קלאס); 

ואז השתמש בו:

logger.info ("יומן דוגמא מ- {}", Example.class.getSimpleName ()); 

זהו הקשר הרישום שלנו. כשיצרנו אותו עברנו LoggerFactory הכיתה שלנו. זה נותן את כּוֹרֵת עֵצִים שם (יש גם עומס יתר שמקבל a חוּט).

הקשרים של רישום קיימים בהיררכיה הדומה מאוד להיררכיית אובייקט Java.

  1. לוגר הוא אב קדמון כאשר שמו, ואחריו נקודה, מקדים את שם לוגר הצאצאים
  2. לוגר הוא הורה כשאין אבות קדומים בינו לבין ילד

לדוגמא, ה דוגמא הכיתה למטה נמצאת ב com.baeldung.logback חֲבִילָה. יש עוד כיתה בשם דוגמה בתוך ה com.baeldung.logback.appenders חֲבִילָה.

דוגמה של רושם הלוח של Appender הוא ילד של לוגר הדוגמה.

כל חוטבי העץ הם צאצאים של לוגר השורשים שהוגדר מראש.

א כּוֹרֵת עֵצִים יש רָמָה, שניתן להגדיר באמצעות תצורה או עם Logger.setLevel (). הגדרת הרמה בקוד עוקפת קבצי תצורה.

הרמות האפשריות הן, לפי סדר הקדימות: עקבות, DEBUG, מידע, אזהרה ו שְׁגִיאָה.לכל רמה יש שיטה מתאימה בה אנו משתמשים כדי לתעד הודעה ברמה זו.

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

5.2. שימוש בהקשר

בואו ליצור תוכנית לדוגמא המדגימה שימוש בהקשר בהיררכיות הרישום:

ch.qos.logback.classic.Logger parentLogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger ("com.baeldung.logback"); parentLogger.setLevel (Level.INFO); לוגר ילד חוגר = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger ("com.baeldung.logback.tests"); parentLogger.warn ("הודעה זו נרשמת מכיוון WARN> INFO."); parentLogger.debug ("הודעה זו אינה מחוברת מכיוון ש- DEBUG <INFO."); childlogger.info ("INFO == INFO"); childlogger.debug ("DEBUG <INFO"); 

כאשר אנו מריצים זאת אנו רואים את ההודעות הבאות:

20: 31: 29.586 [main] WARN com.baeldung.logback - הודעה זו נרשמת מכיוון WARN> INFO. 20: 31: 29.594 [ראשי] INFO com.baeldung.logback.tests - INFO == INFO

אנו מתחילים בהחזרת א כּוֹרֵת עֵצִים נקרא com.baeldung.logback והשליך אותו לא ch.qos.logback.classic.Logger.

יש צורך בהקשר Logback כדי לקבוע את הרמה בהצהרה הבאה; שים לב כי לוגר המופשט של SLF4J אינו מיישם setLevel ().

קבענו את רמת ההקשר שלנו ל מידע;לאחר מכן אנו יוצרים לוגר נוסף בשם com.baeldung.logback.tests.

אנו רושמים שתי הודעות בכל הקשר כדי להדגים את ההיררכיה. יומן רישום מחדש לְהַזהִיר, ו מידע הודעות ומסנן את לנפותהודעות.

עכשיו, בואו נשתמש ביומן השורשים:

ch.qos.logback.classic.Logger logger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger ("com.baeldung.logback"); logger.debug ("שלום!"); לוגר rootLogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger (org.slf4j.Logger.ROOT_LOGGER_NAME); logger.debug ("הודעה זו נרשמת מכיוון ש- DEBUG == DEBUG."); rootLogger.setLevel (Level.ERROR); logger.warn ("הודעה זו אינה מחוברת משום ש- WARN <ERROR."); logger.error ("זה רשום."); 

אנו רואים את ההודעות הללו כאשר אנו מבצעים את קטע הקוד הזה:

20: 44: 44.241 [ראשי] DEBUG com.baeldung.logback - היי! 20: 44: 44.243 [main] DEBUG com.baeldung.logback - הודעה זו נרשמת מכיוון ש- DEBUG == DEBUG. 20: 44: 44.243 [main] ERROR com.baeldung.logback - זה רשום. 

לסיום התחלנו עם כּוֹרֵת עֵצִים הקשר והודפס א לנפות הוֹדָעָה.

לאחר מכן השגנו את לוגר השורשים באמצעות שמו המוגדר סטטית והגדרנו את רמתו ל- שְׁגִיאָה.

ולבסוף, הוכחנו שלוגבק למעשה מסנן כל משפט פחות משגיאה.

5.3. הודעות פרמטריות

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

שקול את ההודעה הבאה:

log.debug ("הספירה הנוכחית היא" + ספירה); 

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

לוגבק מציע אלטרנטיבה עם ההודעות שלה פרמטרים:

log.debug ("הספירה הנוכחית היא {}", ספירה); 

הפלטה {} תקבל כל אחת מהן לְהִתְנַגֵד ומשתמש בה toString () שיטה לבניית הודעה רק לאחר אימות שהודעת היומן נדרשת.

בואו ננסה כמה פרמטרים שונים:

הודעת מחרוזת = "זו מחרוזת"; מספר שלם אפס = 0; נסה את {logger.debug ("הודעת רישום: {}", הודעה); logger.debug ("הולך לחלק {} ב- {}", 42, אפס); תוצאת int = 42 / אפס; } לתפוס (חריג e) {logger.error ("שגיאה בחלוקה {} ב- {}", 42, אפס, e); } 

קטע זה מניב:

21: 32: 10.311 [main] DEBUG com.baeldung.logback.LogbackTests - הודעת רישום: זו מחרוזת 21: 32: 10.316 [main] DEBUG com.baeldung.logback.LogbackTests - הולך לחלק 42 לפי 0 21:32 : 10.316 [ראשי] ERROR com.baeldung.logback.LogbackTests - שגיאה בחלוקה 42 ב- java.lang.ArithmeticException: / באפס ב- com.baeldung.logback.LogbackTests.givenParameters_ValuesLogged (LogbackTests.java:64) ... 

אנו רואים כיצד א חוּט, an int, ו מספר שלם ניתן להעביר כפרמטרים.

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

6. תצורה מפורטת

בדוגמאות הקודמות השתמשנו בקובץ התצורה בן 11 השורות שיצרנו בסעיף 4 כדי להדפיס הודעות יומן למסוף. זוהי התנהגות ברירת המחדל של Logback; אם הוא לא יכול למצוא קובץ תצורה, הוא יוצר ConsoleAppender ומשייך את זה לוגר השורשים.

6.1. איתור מידע תצורה

ניתן להציב קובץ תצורה בכיתה ולתת שם logback.xml אוֹ logback-test.xml.

כך ניסה Logback למצוא נתוני תצורה:

  1. חפש קבצים בשם logback-test.xml, logback.groovy,אוֹ logback.xml בשביל הכיתה, לפי הסדר הזה.
  2. אם הספריה לא תמצא קבצים אלה, היא תנסה להשתמש בקבצי Java ServiceLoader לאתר מיישם של com.qos.logback.classic.spi.Configurator.
  3. הגדר את עצמו כך שיירשם פלט ישירות למסוף

הערה: הגרסה הנוכחית של Logback אינה תומכת בתצורת Groovy מכיוון שאין גרסה של Groovy התואמת ל- Java 9.

6.2. תצורה בסיסית

בואו נסתכל מקרוב על תצורת הדוגמה שלנו.

כל הקובץ נמצא ב תגים.

אנו רואים תג שמכריז על חוטב מהסוג ConsoleAppender, ושמו STDOUT. מקודד מקנן בתוך תג זה. יש לה דפוס עם איך שנראה בסגנון ספרינטף קודי מילוט:

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

אחרון, אנו רואים א שורש תָג. תג זה מגדיר את רושם השורשים ל לנפות מצב ומשייך את תפוקתו ל- חוטב נקרא STDOUT:

6.3. תצורת פתרון בעיות

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

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

 ... 

Logback ידפיס מידע על המצב למסוף תוך כדי עיבוד התצורה:

23: 54: 23,040 | -INFO ב- ch.qos.logback.classic.LoggerContext [ברירת מחדל] - נמצא המשאב [logback-test.xml] ב- [file: / Users / egoebelbecker / ideaProjects / logback-guide / out / test / resources / logback-test.xml] 23: 54: 23,230 | -INFO ב- ch.qos.logback.core.joran.action.AppenderAction - עומד לאינסטינציה של appender מהסוג [ch.qos.logback.core.ConsoleAppender] 23: 54: 23,236 | -INFO ב- ch.qos.logback.core.joran.action.AppenderAction - מתן שמות לאנדר כ- [STDOUT] 23: 54: 23,247 | -INFO ב- ch.qos.logback.core.joran.action.NestedComplexPropertyIA - בהנחה שהסוג המוגדר כברירת מחדל [ch.qos.logback.classic.encoder.PatternLayoutEncoder] עבור מאפיין [encoder] 23: 54: 23,308 | -INFO ב- ch.qos.logback.classic.joran.action.RootLoggerAction - הגדרת רמת כונן שורש DEBUG 23: 54: 23,309 | -INFO ב ch.qos.logback.core.joran.action.AppenderRefAction - הצמדת appender בשם [STDOUT] לוגר [ROOT] 23: 54: 23,310 | -INFO ב ch.qos.logback. classic.joran.action.ConfigurationAction - סוף התצורה. 23: 54: 23,313 | -INFO ב [מוגן בדוא"ל] - רישום התצורה הנוכחית כנקודת נפילה בטוחה

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

קיים מנגנון שני להדפסת מידע על המצב:

  ... 

ה StatusListener מיירט הודעות סטטוס ומדפיס אותן במהלך התצורה ותוך כדי התוכנית פועלת.

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

6.4. טעינה מחדש של התצורה באופן אוטומטי

טעינה מחדש של תצורת הרישום בזמן שהיישום פועל היא כלי רב עוצמה לפתרון בעיות. Logback מאפשר זאת באמצעות לִסְרוֹק פָּרָמֶטֶר:

 ... 

התנהגות ברירת המחדל היא סריקת קובץ התצורה לשינויים כל 60 שניות. שנה מרווח זה על ידי הוספה scanPeriod:

 ... 

אנו יכולים לציין ערכים באלפיות השנייה, שניות, דקות או שעות.

6.5. משנה חוטבי עצים

בקובץ הדוגמה שלנו לעיל קבענו את רמת לוגר השורשים ושייכנו אותו למסוף חוטב.

אנו יכולים לקבוע את הרמה עבור כל לוגר:

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

בואו להוסיף את זה לשביל הכיתה שלנו ולהפעיל את הקוד הזה:

לוגר foobar = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger ("com.baeldung.foobar"); לוגר לוגר = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger ("com.baeldung.logback"); Logger testslogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger ("com.baeldung.logback.tests"); foobar.debug ("זה מחובר מ- foobar"); logger.debug ("זה לא מחובר מלוגר"); logger.info ("זה מחובר מלוגר"); testslogger.info ("זה לא מחובר מבדיקות"); testslogger.warn ("זה מחובר מבדיקות"); 

אנו רואים פלט זה:

00: 29: 51.787 [ראשי] DEBUG com.baeldung.foobar - זה נרשם מ foobar 00: 29: 51.789 [main] INFO com.baeldung.logback - זה מחובר מ לוגר 00: 29: 51.789 [main] WARN com .baeldung.logback.tests - זה נרשם ממבחנים 

בכך שאיננו מגדירים את רמת הלוגרים שלנו באופן פרוגרמטי, התצורה קובעת אותם; com.baeldung.foobar יורש לנפות ממכשיר השורשים.

חוטבי עציםגם לרשת את appender-ref ממכשיר השורשים. כפי שנראה בהמשך, אנו יכולים לעקוף זאת.

6.6. החלפה משתנה

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

לדוגמה, הנה התצורה של a FileAppender:

  $ {LOG_DIR} /tests.log true% -4relative [% thread]% -5 level% logger {35} -% msg% n 

בראש התצורה, הכרזנו על תכונהנקרא LOG_DIR.ואז השתמשנו בו כחלק מהנתיב לקובץ בתוך ה- appender הַגדָרָה.

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

$ java -DLOG_DIR = / var / log / application com.baeldung.logback.LogbackTests

אנו מציינים את ערך הנכס עם $ {propertyname}. Logback מיישם משתנים כהחלפת טקסט. החלפה משתנה יכולה להתרחש בכל נקודה בקובץ תצורה בה ניתן לציין ערך.

7. מתלמידים

חוטבי עצים לַעֲבוֹר כניסה לאירועים ל מתלמידים.מתלמידים לעשות את עבודת הרישום בפועל. בדרך כלל אנו חושבים על רישום כעל משהו שעובר לקובץ או למסוף, אך לוגבק מסוגל להרבה יותר. ליבת ליבה מספק מספר תוספות שימושיות.

7.1. ConsoleAppender

ראינו ConsoleAppenderכבר בפעולה. למרות שמו, ConsoleAppender מצרף הודעות ל System.outאוֹ System.err.

הוא משתמש ב- OutputStreamWriter לאגר את קלט / פלט, אז לכוון אותו אל System.err אינו מביא לכתיבה לא מתוזרת.

7.2. FileAppender

FileAppenderמוסיף הודעות לקובץ. הוא תומך במגוון רחב של פרמטרי תצורה. בואו נוסיף קובץ appender לתצורה הבסיסית שלנו:

    % d {HH: mm: ss.SSS} [% thread]% -5 level% logger {36} -% msg% n tests.log true% -4relative [% thread]% -5 level% logger {35} -% msg % n 

ה FileAppender מוגדר עם שם קובץ באמצעות . ה תג מורה ל חוטבלצרף לקובץ קיים במקום לקטוע אותו. אם אנו מבצעים את הבדיקה מספר פעמים, אנו רואים שפלט הרישום מצורף לאותו קובץ.

אם אנו מריצים מחדש את הבדיקה שלנו מלמעלה, הודעות מאת com.baeldung.logback.tests עבור אל המסוף וגם אל קובץ בשם tests.log. לוגר הצאצאים יורש את הקשר של רושם השורשים עם ה- ConsoleAppender עם הקשר שלה עם FileAppender. המועמדים הם מצטברים.

אנו יכולים לעקוף התנהגות זו:

הגדרה תוספות ל שֶׁקֶרמבטל את התנהגות ברירת המחדל. בדיקות לא ייכנס לקונסולה, ואף אחד מצאצאיו לא.

7.3. RollingFileAppender

לעתים קרובות, הוספת הודעות יומן לאותו קובץ אינה ההתנהגות הדרושה לנו. אנו רוצים שקבצים "יתגלגלו" על סמך זמן, גודל קובץ יומן הרישום או שילוב של שניהם.

בשביל זה, יש לנו RollingFileAppender:

  $ {LOG_FILE}. לוג $ {LOG_FILE}.% D {yyyy-MM-dd} .gz 30 3GB% -4related [% thread]% -5 level logger {35} -% msg% n 

א RollingFileAppenderיש RollingPolicy.בתצורה לדוגמה זו אנו רואים א TimeBasedRollingPolicy.

דומה ל FileAppender, הגדרנו למוסף זה שם קובץ. הכרזנו על נכס והשתמשנו בו לשם כך שנשתמש שוב בשם הקובץ למטה.

אנו מגדירים א fileNamePattern בתוך ה RollingPolicy.דפוס זה מגדיר לא רק את שם הקבצים, אלא גם את תדירות הגלגול שלהם. TimeBasedRollingPolicyבוחן את התבנית ומתגלגל בתקופה המוגדרת ביותר.

לדוגמה:

   $ {LOG_DIR} / $ {LOG_FILE}. בלוג $ {LOG_DIR} /% d {yyyy / MM} / $ {LOG_FILE} .gz 3GB 

קובץ היומן הפעיל הוא / var / logs / application / LogFile.קובץ זה מתגלגל בתחילת כל חודש / השנה הנוכחית / החודש הנוכחי / LogFile.gzו RollingFileAppender יוצרקובץ פעיל חדש.

כאשר הגודל הכולל של קבצים שמועברים בארכיון מגיע ל -3 GB, RollingFileAppenderמוחק ארכיונים על בסיס ראשית בהתחלה.

ישנם קודים לשבוע, שעה, דקה, שנייה ואפילו אלפית השנייה. לוגבק יש התייחסות כאן.

RollingFileAppenderיש גם תמיכה מובנית לדחיסת קבצים. זה דוחס את הקבצים המגולגלים שלנו כיוון ששמו שלנו LogFile.gz.

TimeBasedPolicyאינה האפשרות היחידה שלנו לגלגל קבצים. לוגבק מציע גם גודל וזמן מבוסס רולינג מדיניות,אשר יתגלגל על ​​בסיס גודל קובץ היומן הנוכחי, כמו גם הזמן. הוא מציע גם FixedWindowRollingPolicyשמגלגל שמות של קבצי יומן בכל הפעלת הלוגר.

אנחנו יכולים גם לכתוב בעצמנו RollingPolicy.

7.4. מורשים מותאמים אישית

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

8. פריסות

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

השתמשנו תבנית פריסה בכל הדוגמאות שלנו עד כה:

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

סקריפט תצורה זה מכיל את התצורה עבור תבנית LayoutEncoder.אנחנו עוברים קוֹדַאִי שלנו Appender,ומקודד זה משתמש ב- תבנית פריסה לעיצוב ההודעות.

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

בואו נשבור את זה. תבנית פריסה מזהה מילות המרה עם%, ולכן ההמרות בתבנית שלנו מייצרות:

  • % d {HH: mm: ss.SSS} - חותמת זמן עם שעות, דקות, שניות ומילישניות
  • [%פְּתִיל] - שם השרשור שיוצר את הודעת היומן, מוקף בסוגריים מרובעים
  • % -5 רמת - רמת אירוע הכניסה, מרופדת ל -5 תווים
  • לוגר% {36} - שם הלוגר, קטוע עד 35 תווים
  • % msg% n - הודעות היומן ואחריהן תו המפריד בין השורה תלוי הפלטפורמה

אז אנו רואים הודעות דומות לזה:

21: 32: 10.311 [ראשי] DEBUG com.baeldung.logback.LogbackTests - הודעת כניסה: זו מחרוזת

רשימה ממצה של מילות המרה ושינויים בפורמט ניתן למצוא כאן.

9. מסקנה

במדריך נרחב זה סקרנו את יסודות השימוש ב- Logback ביישום.

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

כרגיל, ניתן למצוא קטעי קוד ב- GitHub.