מבוא לרישום ג'אווה

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

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

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

2. הפעלת רישום

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

  1. הוספת ספריות נחוצות
  2. תְצוּרָה
  3. הצבת הצהרות יומן

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

3. Log4j 2

Log4j 2 הוא גרסה חדשה ומשופרת של מסגרת הרישום של Log4j. השיפור המשכנע ביותר הוא האפשרות של רישום אסינכרוני. Log4j 2 דורש את הספריות הבאות:

 org.apache.logging.log4j log4j-api 2.6.1 org.apache.logging.log4j log4j-core 2.6.1 

הגרסה האחרונה של log4j-api אתה יכול למצוא כאן ו log4j-core - פה.

3.1. תְצוּרָה

קביעת התצורה של Log4j 2 מבוססת על התצורה הראשית log4j.xml קוֹבֶץ. הדבר הראשון שיש להגדיר הוא ה- appender.

אלה קובעים היכן תנותב הודעת היומן. היעד יכול להיות קונסולה, קובץ, שקע וכו '.

ל- Log4j 2 יש appenders רבים למטרות שונות, תוכלו למצוא מידע נוסף באתר הרשמי של Log4j 2.

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

אתה יכול להגדיר שם לכל תוסף, למשל להשתמש בשם לְנַחֵם במקום stdout.

שימו לב ל תבנית פריסה אלמנט - זה קובע כיצד המסר צריך להראות. בדוגמה שלנו, התבנית נקבעת על סמך תבנית פארם, איפה % d קובע דפוס תאריך, % p - פלט של רמת יומן, %M - פלט של הודעה מחוברת ו- % n - מוסיף סמל קו חדש. מידע נוסף על תבנית תוכלו למצוא בדף הרשמי של Log4j 2.

סוף כל סוף - כדי לאפשר חוטף (או מרובה) אתה צריך להוסיף אותו סָעִיף:

3.2. כניסה לקובץ

לפעמים תצטרך להשתמש בכניסה לקובץ, ולכן נוסיף טעות לוגר לתצורה שלנו:

   % d {yyyy-MM-dd HH: mm: ss}% -5p% m% nw 

ה קוֹבֶץ ל- appender יש מספר פרמטרים שניתן להגדיר:

  • קוֹבֶץ - קובע את שם הקובץ של קובץ היומן
  • לְצַרֵף - ערך ברירת המחדל עבור פרמטר זה הוא נכון, כלומר כברירת מחדל א קוֹבֶץ appender יוסיף לקובץ קיים ולא יחתוך אותו.
  • תבנית פריסה שתואר בדוגמה הקודמת.

על מנת לאפשר קוֹבֶץ אתה צריך להוסיף אותו סָעִיף:

3.3. רישום אסינכרוני

אם אתה רוצה להפוך את ה- Log4j 2 שלך לאסינכרוני, עליך להוסיף את ספריית ה- LMAX המשבשת שלך pom.xml. משבש LMAX הוא ספריית תקשורת בין חוטים ללא נעילה.

הוספת משבש ל- pom.xml:

 משבש com.lmax 3.3.4 

הגרסה האחרונה של משבש ניתן למצוא כאן.

אם אתה רוצה להשתמש ב- LMAX משבש אתה צריך להשתמש במקום בתצורה שלך.

לחלופין, תוכל להפעיל רישום אסינכרוני על ידי הגדרת מאפיין המערכת Log4jContextSelector ל org.apache.logging.log4j.core.async.AsyncLoggerContextSelector.

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

3.4. נוֹהָג

להלן דוגמה פשוטה המדגימה את השימוש ב- Log4j לצורך כניסה:

ייבא org.apache.logging.log4j.Logger; ייבא org.apache.logging.log4j.LogManager; מחלקה ציבורית Log4jExample {לוגר לוגר סטטי פרטי = LogManager.getLogger (Log4jExample.class); main public סטטי ריק (String [] args) {logger.debug ("הודעת יומן ניפוי באגים"); logger.info ("הודעת יומן מידע"); logger.error ("הודעת יומן שגיאה"); }}

לאחר הריצה, היישום יירשם את ההודעות הבאות למסוף ולקבצים בשם baeldung.log:

2016-06-16 17:02:13 INFO הודעת יומן מידע 2016-06-16 17:02:13 שגיאה הודעת יומן שגיאה

אם תעלה את רמת יומן השורש ל שְׁגִיאָה:

הפלט ייראה כך:

2016-06-16 17:02:13 שגיאה הודעת יומן שגיאה

כפי שאתה יכול לראות, שינוי רמת היומן לפרמטר עליון גורם להודעות עם רמות יומן נמוכות יותר לא יודפסו למוסיפים.

שיטה logger.error יכול לשמש גם לרישום חריג שהתרחש:

נסה {// כאן ניתן לזרוק חריג כלשהו} לתפוס (חריג e) {logger.error ("הודעת יומן שגיאה", ניתן לזריקה); }

3.5. תצורת רמת החבילה

נניח שאתה צריך להציג הודעות עם רמת היומן TRACE - למשל מחבילה ספציפית כגון com.baeldung.log4j2:

logger.trace ("הודעת יומן מעקב");

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

יש לזכור ש- TRACE נמוך מ- INFO ברמת יומן השורש שציינו בתצורה.

כדי לאפשר רישום רק עבור אחת החבילות עליך להוסיף את הסעיף הבא לפני כן לשלך log4j.xml:

זה יאפשר כניסה עבור com.baeldung.log4j החבילה והתפוקה שלך תיראה כמו:

2016-06-16 17:02:13 TRACE הודעת יומן עקבות 2016-06-16 17:02:13 DEBUG ניפוי הודעה ביומן 2016-06-16 17:02:13 INFO הודעת יומן מידע 2016-06-16 17:02 : 13 שגיאה הודעת יומן שגיאה

4. לוגבק

Logback אמור להיות גרסה משופרת של Log4j, שפותחה על ידי אותו מפתח שייצר את Log4j.

ל- Logback יש גם הרבה יותר תכונות בהשוואה ל- Log4j, כאשר רבים מהם הוצגו גם ב- Log4j 2. הנה מבט מהיר על כל היתרונות של Logback באתר הרשמי.

נתחיל בהוספת התלות הבאה ל- pom.xml:

 ch.qos.logback logback-classic 1.1.7 

תלות זו תביא באופן תמידי שתי תלות נוספות, ליבת ליבה ו slf4j-api. שים לב שאת הגרסה האחרונה של Logback ניתן למצוא כאן.

4.1. תְצוּרָה

בואו נסתכל על דוגמא לתצורת Logback:

 # Console appender # תבנית של הודעת יומן עבור appender קונסולה% d {yyyy-MM-dd HH: mm: ss}% -5p% m% n # File appender baeldung.log false # תבנית של הודעת יומן עבור appender% d { yyyy-MM-dd HH: mm: ss}% -5p% m% n # עקיפת רמת יומן החבילה שצוינה 

Logback משתמש ב- SLF4J כממשק, לכן עליך לייבא SLF4J כּוֹרֵת עֵצִים ו LoggerFactory.

4.2. SLF4J

SLF4J מספק ממשק משותף והפשטה עבור מרבית מסגרות הרישום של Java. הוא משמש כחזית ומספק ממשק API סטנדרטי לגישה לתכונות הבסיסיות של מסגרת הרישום.

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

יבוא org.slf4j.Logger; יבוא org.slf4j.LoggerFactory; מחלקה ציבורית Log4jExample {לוגר לוגר סטטי פרטי = LoggerFactory.getLogger (Log4jExample.class); main public סטטי ריק (String [] args) {logger.debug ("הודעת יומן ניפוי באגים"); logger.info ("הודעת יומן מידע"); logger.error ("הודעת יומן שגיאה"); }}

הפלט יישאר כמו בדוגמאות הקודמות.

5. Log4J

לבסוף, בואו נסתכל על מסגרת הרישום של Log4j המכובדת.

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

רבים מפרטי התצורה תואמים את אלה שנדונו בסעיף Log4j 2.

5.1. תְצוּרָה

קודם כל אתה צריך להוסיף את ספריית Log4j לפרויקטים שלך pom.xml:

 log4j log4j 1.2.17 

כאן אתה אמור להיות מסוגל למצוא את הגרסה האחרונה של Log4j.

בואו נסתכל על דוגמה מלאה לתצורה פשוטה של ​​Log4j עם רושם קונסולה אחד בלבד:

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

5.2. נוֹהָג

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

יבוא org.apache.log4j.Logger; מחלקה ציבורית Log4jExample {לוגר לוגר סטטי פרטי = Logger.getLogger (Log4jExample.class); main public סטטי ריק (String [] args) {logger.debug ("הודעת יומן ניפוי באגים"); logger.info ("הודעת יומן מידע"); logger.error ("הודעת יומן שגיאה"); }}

6. מסקנה

מאמר זה מציג דוגמאות פשוטות מאוד כיצד ניתן להשתמש במסגרת רישום שונה כגון Log4j, Log4j2 ו- Logback. הוא מכסה דוגמאות תצורה פשוטות לכל המסגרות שהוזכרו.

את הדוגמאות שמלוות את המאמר ניתן למצוא באתר GitHub.


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