רישום הוא הטכניקה של שמירת רישומים למטרות עתידיות במחזור פיתוח התוכנה. רישום הוא קריטי מכיוון שיומנים מסייעים באיתור באגים, אבחון, פתרון בעיות וניטור פרויקטים.
אתה יכול להשתמש ברישום ברמות שונות של היישומים שלך עבור שגיאות, אזהרות, ניפוי באגים ועוד.
התחברות Go
הספרייה הסטנדרטית של Go מכיל א עֵץ חבילה עשירה בפונקציונליות. הוא מטפל ברמות רישום שונות ובשיטות בסיסיות הקשורות לרישום שתזדקק ליישום שלך. אולם, ה עֵץ ייתכן שהחבילה לא תהיה הבחירה הטובה ביותר אם האפליקציה שלך מורכבת ואתה רוצה לתת עדיפות לפרודוקטיביות.
ה עֵץ החבילה אינה מספקת פונקציונליות עבור יומנים מובנים. חבילות רישום מובנות מספקות פונקציונליות המפשטת ומשפרת את תהליך הרישום. המערכת האקולוגית של Go היא ביתם של הרבה חבילות כאלה.
1. זאפ של אובר
זאפ היא חבילת רישום מהירה, מובנית ומפולסת שנבנתה על ידי צוות הקוד הפתוח של Uber לכתיבת יומנים ב-Go. אובר בנה את חבילת Zap כדי לספק רישום ביצועים יותר מאשר חבילות אחרות במערכת האקולוגית של Go, כולל עֵץ חֲבִילָה.
בחבילת ה-Zap ישנם שני כורתי עצים נפרדים. ה כּוֹרֵת עֵצִים הפונקציה מטפלת במקרים קריטיים של ביצועים. ה
SugaredLogger מציעה גמישות רבה יותר עם ה-API שלו בסגנון printf, אבל זה מגיע עם הפרש קטן בביצועים. אפילו חבילת SugaredLogger האיטית יותר מהירה פי 4-10 מחבילות רישום מובנות אחרות.הפעל את הדברים הבאים בשורת פקודה כדי להתקין את חבילת Zap:
ללכת לקבל -u ללכת.uber.org/zap
תזדקק לגרסה עדכנית של Go כדי להתקין ולהשתמש בהצלחה בפונקציונליות של חבילת Zap.
לוגר, טעות := zap. NewProduction() // מופע zap loger
אם טעות != אֶפֶס {
fmt. Println (שגיאה. שְׁגִיאָה())
}לִדחוֹת כּוֹרֵת עֵצִים. סינכרון() // שוטף מאגרים, אם קיימים
סוכר := לוגר. סוכר() //לוגר מסוכר כאןסוכר. Infow("לא הצליח להביא כתובת URL",
// הקשר מובנה כצמדי מפתח-ערך המוקלדים באופן רופף.
"כתובת אתר", כתובת אתר,
"לְנַסוֹת", 3,
"גיבוי", זמן. שְׁנִיָה,
)
סוכר. Infof("נכשל באחזור כתובת האתר: %s", URL) // באמצעות הפורמט בסגנון printf
ה כּוֹרֵת עֵצִים משתנה הוא מופע של ה זאפ לוגר, ואת סוכר השיטה היא מופע לוגר מסוכר.
ה מידע השיטה כותבת לפלט, וה- אינפוף היא גרסת העיצוב של מידע שיטה.
2. חבילת Logrus
לוגרוס היא חבילת רישום מובנית עבור אפליקציות Go. Logrus תואם לוגר הספרייה הסטנדרטי, עם פונקציונליות דומה. אם יש לך ניסיון בשימוש ב עֵץ חבילה, תמצא חבילה שעובדת עם Logrus.
Logrus אינו תומך בעיצוב JSON כברירת מחדל. אבל אתה תמיד יכול להשתמש בספריית JSON כמו המובנית json חבילה עם Logrus' SetFormatter שיטה.
Logrus תומך ברישום ברמות שונות, ולמרות שהוא אינו ביצועי כמו רוב חבילות הרישום, הוא עשיר בתכונות ובטוח.
אתה יכול להשתמש בפקודה זו כדי להתקין את Logrus בספריית העבודה שלך:
ללכת קבל github.com/sirupsen/logrus
הנה דוגמה לרישום עם חבילת Logrus.
יְבוּא (
"os"
יומן "github.com/sirupsen/logrus" // ייבוא כינוי
)funcרָאשִׁי {
עֵץ. SetFormatter(&log. JSONFormatter{}) // הגדר את הפורמט ל-JSON
עֵץ. SetOutput (os. Stdout) // פלט לפלט סטנדרטי
עֵץ. SetLevel (log. WarnLevel) // הגדר רמת אזהרה
עֵץ. WithFields (יומן. שדות{
"שם": "ג'ון דו",
"גיל": 40,
}).Info("הביוגרפיה של ג'ון")
}
קוד זה מייבא את ספריית Logrus ויוצר עבורה כינוי בשם עֵץ. בתוך ה רָאשִׁי פונקציה, היא קוראת ל- SetFormatter שיטה להגדיר פורמט עבור היומנים. אתה יכול להשתמש ב SetOutput שיטה לציין לאן הודעות יומן אמורות לעבור; במקרה זה, פלט סטנדרטי.
ה SetLevel השיטה רושמת אזהרות ברמה שצוינה ומעלה.
3. חבילת ZeroLog
ZeroLog היא ספריה ייעודית לרישום בהשראת Zap, מהירה, המיועדת לביצועים. הוא משתמש ב-API ייחודי לשרשור המאפשר ל-Zerolog לכתוב JSON ולהתחבר לאירועים ללא הקצאות והשתקפויות.
Zerolog שואפת לספק API קל יותר לשימוש וביצועים גבוהים יותר תוך שמירה על בסיס הקוד וה-API פשוטים. זה מתמקד ברישום מובנה ואתה יכול להשתמש ב ConsoleWriter שיטה לכניסה יפה לקונסולה שלך.
יש הקצאה נמוכה, רישום מפולס, דגימה, הוקס, שדות הקשרים ורישום שגיאות עם תכונות מעקב מחסניות אופציונליות בחבילת Zerolog. אתה יכול גם לשלב את Zerolog עם הֶקשֵׁר ו http חבילות.
הפעל פקודה זו במסוף של סביבת העבודה שלך כדי להתקין את זרולוג חֲבִילָה.
ללכת get -u [github.com/rs/zerolog/log](http://github.com/rs/zerolog/log)
הנה דוגמה פשוטה לשימוש בחבילת Zerolog עבור פעולה פשוטה.
יְבוּא (
"github.com/rs/zerolog" // zerolog עבור הגדרות
"github.com/rs/zerolog/log" // יומן עבור רישום
)funcרָאשִׁי() {
// זמן UNIX מהיר וקטן יותר מרוב חותמות הזמן
זרולוג. TimeFieldFormat = zerolog. TimeFormatUnix
עֵץ. Print("שלום עולם")
}
ה TimeFieldFormat האפשרות מוגדרת לתבנית זמן Unix, וה- הדפס הפקודה כותבת את ארגומנט הטקסט לפלט סטנדרטי.
4. חבילת Log15
ה יומן15 החבילה היא ערכת כלים דעתנית פשוטה לרישום אנושי וקריאה במכונה עם שיטות עבודה מומלצות ב-Go. Log15 דגמים את io ו http חבילות מהספרייה הסטנדרטית של Go כחלופה למובנה עֵץ חֲבִילָה.
התכונות של חבילת Log15 כוללות:
- ממשק API פשוט וקל להבנה
- רישום מובנה עם צמדי מפתח-ערך
- כורתי ילדים עם הקשר פרטי
- ממשק מטפל לבניית תצורות רישום מותאמות אישית על פני ממשק API זעיר
- תמיכה במסוף צבעוני
- תמיכה מובנית ברישום לקבצים, זרמים, יומני מערכת ויומני רשת
- אחסון רשומות לפלט.
אתה יכול להתקין יומן15 לחבילות ה-Go שלך עם הפקודה הזו.
ללכת קבל github.com/inconshreveable/log15
קל להתחיל עם חבילת Log15. הנה דוגמה לאינסטציה של לוגר וכניסה למידע ורמות שגיאה בחבילה.
יְבוּא (
יומן "github.com/inconshreveable/log15" // כינוי ייבוא בתור יומן
)
funcרָאשִׁי() {
serverLog := יומן. New("מאגר", "חָדָשׁ מאגר") // יומן לוגר
שרת Log. מידע ("בדיקת תקינות שכבת המאגר הצליחה") // יומן מידע
שרת Log. שגיאה ("בדיקת תקינות שכבת המאגר נכשלה") // יומן שגיאות
}
ה שרת Log המשתנה הוא מופע של לוגר Log15; ה חָדָשׁ השיטה מחזירה לוגר עם ארגומנטים ההקשר שאתה מספק.
ה מידע השיטה מחזירה הודעת מידע, וה- שְׁגִיאָה השיטה מחזירה הודעת שגיאה.
כתוב יומנים שימושיים ומובנים
רישום יכול להיות קריטי כמו כל חלק אחר בתהליך הפיתוח. זה אולי נראה קל מאוד בשלבים הראשונים, אבל היצמדות לשיטות חיוניות עשויה לסבך את התהליך. כדי לטפל בכל מקרה קצה והיבט של רישום, עליך להשתמש בחבילת רישום כדי להקל על הדברים.
השתמש ברמות רישום, מבנה והקשר כדי להפוך את היומנים שלך למובנים ומתאימים למטרות המיועדות להם.