צפייה ביומנים באמצעות Logcat

חלון Logcat ב-Android Studio עוזר לנפות באגים באפליקציה באמצעות הצגת יומנים מהמכשיר בזמן אמת, לדוגמה, הודעות נוספו לאפליקציה עם הכיתה Log, ההודעות משירותים שפועלים ב-Android, או מהודעות מערכת, למשל העברה לאשפה מתבצע איסוף של הנתונים. כשאפליקציה מקפיצה הודעת שגיאה, Logcat מציג הודעה ולאחר מכן דוח הקריסות המשויך שמכיל קישורים לשורת הקוד.

תחילת העבודה עם החלון של Logcat

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

  1. ב-Android Studio, יוצרים ומפעילים את האפליקציה המכשיר או אמולטור.
  2. בוחרים באפשרות תצוגה > Windows בכלי > רישום ביומן בסרגל התפריטים.

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

ממשק המשתמש של חלון Logcat

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

איך לקרוא יומנים

לכל יומן יש תאריך, חותמת זמן, תהליך ומזהה שרשור, תג, שם חבילה, וההודעה שמשויכת אליה. לתגים שונים יש צבע ייחודי שעוזר לזהות את סוג היומן. לכל רשומה ביומן יש עדיפות של FATAL, ERROR, WARNING, INFO, DEBUG או VERBOSE.

לדוגמה, להודעת היומן הבאה יש עדיפות של DEBUG ותג של ProfileInstaller:

2022-12-29 04:00:18.823 30249-30321 ProfileInstaller        com.google.samples.apps.sunflower    D  Installing profile for com.google.samples.apps.sunflower

הגדרה של תצוגת היומן

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

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

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

שינוי ערכת הצבעים

כדי לשנות את ערכת הצבעים, צריך לעבור אל Android Studio > הגדרות > עריכה > ערכת צבעים. כדי לשנות את ערכת הצבעים של תצוגת היומן: בוחרים באפשרות Android Logcat. כדי לשנות את ערכת הצבעים של הפילטר, בוחרים Logcat Filter.

אפשרויות הגדרה נוספות

לאפשרויות הגדרה נוספות, מנווטים אל Android Studio > הגדרות > כלים > Logcat. מכאן אפשר לבחור את ה-Logcat הגודל של מאגר הנתונים הזמני של המחזור, מסנן ברירת המחדל לחלונות חדשים של Logcat, ואם רוצים להוסיף מסננים מההיסטוריה להשלמה אוטומטית.

שימוש ב-Logcat במספר חלונות

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

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

חלונות מרובים של Logcat איור 2. חלונות Logcat מפוצלים ב-Android Studio.

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

ב-Android Studio אפשר ליצור חיפושי מפתח/ערך ישירות שדה השאילתה הראשי. מערכת השאילתות הזו מספקת דיוק של מה שרוצים וגם להחריג יומנים שמבוססים על ערכי מפתח. אומנם יש לכם אפשרות משתמשים בביטויים רגולריים, לא צריך להסתמך עליהם לשאילתות. לראות הצעות, יש להקיש על Ctrl + Space בשדה השאילתה.

רשימת הצעות בשדה השאילתה איור 3. יש להקיש על Ctrl + Space בשדה השאילתה כדי לראות רשימה של שאילתות מוצעות.

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

  • tag: תואם לשדה tag של הרשומה ביומן.
  • package: תואם לשם החבילה של אפליקציית הרישום ביומן.
  • process: תואם לשם התהליך של אפליקציית הרישום ביומן.
  • message: התאמות לחלק של ההודעה ברשומה ביומן.
  • level: תואם לרמת היומן המחמירה יותר או רמה גבוהה יותר. לדוגמה, DEBUG.
  • age: תואם אם חותמת הזמן של הרשומה היא עדכנית. הערכים מצוינים כ מספר ואחריו אות שמציינת את יחידת הזמן: s לשניות, m עבור דקות, h לשעות ו-d לימים. לדוגמה, מסננים מסוג age: 5m בלבד הודעות שנרשמו ב-5 הדקות האחרונות.

שלילה וביטויים רגולריים

השדות הבאים תומכים בשלילה ובהתאמה של ביטויים רגולריים: tag, package, message וגם line.

השלילה מבוטאת כך שתוסיפו - לשם השדה. לדוגמה, -tag:MyTag תואם לרשומות ביומן שה-tag לא מכיל את המחרוזת MyTag.

התאמה לביטויים רגולריים מבוטאת בהוספת ~ לשם השדה. לדוגמה: tag~:My.*Tag.

אפשר לשלב ערכים של ביטול וביטוי רגולרי. לדוגמה, -tag~:My.*Tag

אופרטורים לוגיים וסוגריים

שפת השאילתה תומכת באופרטורים AND ו-OR שצוינו על ידי & וגם | וסוגריים. לדוגמה:

(tag:foo | level:ERROR) & package:mine

שימו לב שנאכפים קדימות אופרטורים רגילה, כך:

tag:foo | level:ERROR & package:mine

מוערך כך:

tag:foo | (level:ERROR & package:mine)

אופרטורים לוגיים מרומזים

אם לא מחילים אופרטורים לוגיים, שפת השאילתה באופן אוטומטי הפונקציה מחשבת כמה מונחי סינון של key-value לא מבוטלים עם אותו מפתח כמו OR, וכל השאר עם AND.

לדוגמה:

tag:foo tag:bar package:myapp

מוערך כך:

(tag:foo | tag:bar) & package:myapp

אבל:

tag:foo -tag:bar package:myapp

מוערך כך:

tag:foo & -tag:bar & package:myapp

אם כמה מונחי שאילתה מופרדים ברווח לבן ללא אופרטור לוגי, הם נחשבים ל-AND עם קדימות נמוכה. לדוגמה, המונח הערך foo bar tag:bar1 | tag:bar2 זהה ל- 'foo bar' & (tag: bar1 | tag: bar2).

שאילתות מיוחדות

package:mine

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

level

השאילתה level תואמת לרמת היומן של הודעת ה-Logcat, כאשר רמת הרשומה ביומן גדולה מרמת השאילתה או שווה לה.

לדוגמה, level:INFO תואם לכל רשומה ביומן עם רמה של INFO ביומן, WARN, ERROR או ASSERT. הרמה לא תלוית אותיות רישיות (case-sensitive). הרמות החוקיות הן: VERBOSE, DEBUG, INFO, WARN, ERROR וגם ASSERT.

age

השאילתה age תואמת לרשומות על סמך חותמת הזמן שלהן, בפורמט הבא: age:<number><unit>, כאשר

  • <number> הוא מספר שלם
  • <unit> הוא אחד מהערכים s, m, h ו-d (שניות, דקות, שעות וימים).

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

age:30s
age:5m
age:3h
age:1d

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

מפתח is

אפשר להשתמש במפתח is באופן הבא:

  • is:crash תואם לרשומות ביומן שמייצגות קריסה של אפליקציה (מודעות מותאמות או Java).
  • is:stacktrace תואם לרשומות ביומן שמייצגות כל דבר שנראה כמו דוח קריסות של Java, בלי קשר לרמת היומן.

מפתח name

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

הצגה של היסטוריית השאילתות

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

ממשק משתמש להוספת שאילתה למועדפים

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

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

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

חלון Logcat לקריסות של האפליקציה

איור 5. כשתהליך האפליקציה מופעל מחדש, Logcat מדפיסה הודעה הסתיים ואז התחיל.