Logcat — τι είναι, επίπεδα καταγραφής και εργασία με αρχεία καταγραφής

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-05-06 Χρόνος ανάγνωσης: 8 λεπ

Το Logcat — είναι το εργαλείο του Android SDK για προβολή μηνυμάτων συστήματος και αρχείων καταγραφής εφαρμογών σε πραγματικό χρόνο, διαθέσιμο μέσω ADB ή της ενσωματωμένης κονσόλας του Android Studio. Σύμφωνα με το Android Developers, το Logcat συλλέγει μηνύματα από όλες τις διεργασίες του συστήματος, τα φιλτράρει ανά επίπεδο σπουδαιότητας και ετικέτες και επιτρέπει στον προγραμματιστή να διαγιγνώσκει σφάλματα, να παρακολουθεί την εκτέλεση κώδικα και να αναλύει την απόδοση. Logcat — η κύρια πηγή πληροφοριών κατά τον εντοπισμό σφαλμάτων εφαρμογών Android.

Κύρια σημεία

  • Logcat — παράθυρο κονσόλας στο Android Studio για προβολή αρχείων καταγραφής συστήματος Android σε πραγματικό χρόνο
  • Επίπεδα καταγραφής — VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT — καθορίζουν τη σπουδαιότητα του μηνύματος και το όριο φιλτραρίσματος
  • Φιλτράρισμα ανά ετικέτα, επίπεδο και λέξεις-κλειδιά επιτρέπει την εξαγωγή αρχείων καταγραφής μιας συγκεκριμένης εφαρμογής από τη γενική ροή
  • ADB logcat — εντολή τερματικού για πρόσβαση σε αρχεία καταγραφής χωρίς Android Studio, μέσω USB ή Wi-Fi
  • Αρχεία καταγραφής σφαλμάτων Exception με stack trace εισέρχονται αυτόματα στο Logcat και περιέχουν πλήρη διάγνωση της αποτυχίας

Τι είναι το Logcat στο Android

Logcat — είναι ένα buffer συστήματος Android στο οποίο όλες οι διεργασίες (συμπεριλαμβανομένων του πυρήνα Linux, του system_server και των εφαρμογών) γράφουν μηνύματα συγκεκριμένης μορφής. Το εργαλείο logcat, που αποτελεί μέρος του Android SDK, διαβάζει αυτόν τον buffer και εμφανίζει μηνύματα σε πραγματικό χρόνο. Από το Android 4.1 (API 16), η πρόσβαση στο Logcat είναι περιορισμένη: οι εφαρμογές μπορούν να διαβάζουν μόνο τα δικά τους αρχεία καταγραφής, ενώ τα αρχεία καταγραφής συστήματος είναι διαθέσιμα μέσω ADB με πρόσβαση debug.

Κάθε μήνυμα Logcat περιέχει πέντε πεδία: ημερομηνία και ώρα, PID (αναγνωριστικό διεργασίας), TID (αναγνωριστικό νήματος), επίπεδο καταγραφής και ετικέτα. Η μορφή είναι σταθερή και ίδια για όλες τις εκδόσεις Android. Αυτό επιτρέπει τη χρήση εργαλείων grep, awk και sed για φιλτράρισμα αρχείων καταγραφής σε αγωγούς CI/CD χωρίς εξάρτηση από IDE.

Τα αρχεία καταγραφής αποθηκεύονται σε κυκλικό buffer σταθερού μεγέθους: 256 KB για main, 256 KB για system και 256 KB για events (Android 5+). Όταν γεμίσει ο buffer, τα παλιά μηνύματα διαγράφονται. Ο προγραμματιστής μπορεί να αλλάξει το μέγεθος του buffer μέσω PROP logcat.size ή στις ρυθμίσεις προγραμματιστή της συσκευής.

Επίπεδα καταγραφής και ετικέτες: δομή μηνύματος Logcat

Έξι επίπεδα καταγραφής καθορίζουν τη σπουδαιότητα του μηνύματος. Το Android χρησιμοποιεί τυπικά επίπεδα παρόμοια με άλλες πλατφόρμες, αλλά με δικά του ονόματα σταθερών στην κλάση Log. Η επιλογή του σωστού επιπέδου βοηθά στο αποτελεσματικό φιλτράρισμα αρχείων καταγραφής και στην αποφυγή πνιγμού κρίσιμων μηνυμάτων από δευτερεύοντα.

ΕπίπεδοΣταθεράΣκοπόςΕμφανίζεται προεπιλεγμένα
VERBOSELog.vΜέγιστα λεπτομερείς πληροφορίες εντοπισμού σφαλμάτωνΌχι
DEBUGLog.dΜηνύματα εντοπισμού σφαλμάτων για τον προγραμματιστήΌχι
INFOLog.iΕνημερωτικά μηνύματα σχετικά με τη λειτουργία της εφαρμογήςΝαι
WARNLog.wΠροειδοποιήσεις για πιθανά προβλήματαΝαι
ERRORLog.eΚρίσιμα σφάλματα και εξαιρέσειςΝαι
ASSERTLog.wtfΣφάλματα που κατ' αρχήν δεν θα έπρεπε να συμβούνΝαι

Ετικέτες: οργάνωση μηνυμάτων ανά ενότητα

Ετικέτα (tag) — μια συμβολοσειρά έως 23 χαρακτήρων που προσδιορίζει την πηγή του μηνύματος. Συνιστάται η χρήση του ονόματος κλάσης ή ενότητας ως ετικέτας: MainActivity, AuthManager, NetworkModule. Αυτό επιτρέπει το φιλτράρισμα αρχείων καταγραφής ανά συγκεκριμένο στοιχείο της εφαρμογής. Για ομοιομορφία στην ομάδα, μπορούν να δημιουργηθούν σταθερές ετικετών σε ξεχωριστό αρχείο ή να χρησιμοποιηθεί η βιβλιοθήκη Timber που ορίζει αυτόματα την ετικέτα βάσει του ονόματος κλάσης.

Αρχεία καταγραφής σφαλμάτων και stack trace εξαίρεσης

Σε μη διαχειριζόμενη εξαίρεση, το Android γράφει αυτόματα στο Logcat πλήρες stack trace με αναφορά κλάσης, μεθόδου, γραμμής κώδικα και αλυσίδας κλήσεων. Το αρχείο καταγραφής σφάλματος περιέχει τον τύπο εξαίρεσης (NullPointerException, RuntimeException), το μήνυμα και την ακολουθία κλήσεων από το σημείο αποτυχίας έως το σημείο εισόδου της εφαρμογής. Για ανάλυση αρχείων καταγραφής σφαλμάτων από συσκευές χρηστών χρησιμοποιείται το Firebase Crashlytics, το οποίο συγχρονίζει το stack trace με τον χάρτη συσκότισης (mapping.txt για Android).

Logcat στο Android Studio: διεπαφή, φίλτρα και αναζήτηση

Το Android Studio παρέχει γραφική διεπαφή Logcat, προσβάσιμη μέσω View → Tool Windows → Logcat (Alt + 6). Το παράθυρο Logcat ενημερώνεται σε πραγματικό χρόνο, εμφανίζει όλα τα μηνύματα της συνδεδεμένης συσκευής και επιτρέπει τη διαμόρφωση ευέλικτων φίλτρων για εξαγωγή των απαραίτητων πληροφοριών από τη γενική ροή.

Φιλτράρισμα ανά επίπεδο και ετικέτα

Η αναπτυσσόμενη λίστα Log Level φιλτράρει μηνύματα ανά ελάχιστο επίπεδο: επιλέξτε WARN για να βλέπετε μόνο προειδοποιήσεις και σφάλματα, κρύβοντας τα VERBOSE, DEBUG και INFO. Το πεδίο Search επιτρέπει αναζήτηση βάσει κειμένου μηνύματος ή ετικέτας — υποστηρίζει regex, που είναι βολικό για αναζήτηση μηνυμάτων βάσει προτύπου.

Αποθηκευμένα φίλτρα

Saved Filters — μια ισχυρή λειτουργία του Logcat στο Android Studio. Μπορείτε να δημιουργήσετε ένα φίλτρο που εμφανίζει μόνο μηνύματα με την ετικέτα της εφαρμογής σας (tag:MyApp) και επίπεδο WARN+. Τα φίλτρα αποθηκεύονται μεταξύ συνεδριών και είναι διαθέσιμα από την αναπτυσσόμενη λίστα. Για έργα με πολλές ενότητες, δημιουργήστε ξεχωριστό φίλτρο για κάθε ενότητα.

text
# Παράδειγμα έκφρασης για φιλτράρισμα αρχείων καταγραφής εφαρμογής
tag:"MyApp" level:WARN # Μόνο WARN+ για MyApp
package:"com.mycompany" # Όλα τα logs του πακέτου
-tag:"okhttp" # Εξαίρεση logs OkHttp

Εξαγωγή και ανάλυση

Τα αρχεία καταγραφής Logcat μπορούν να εξαχθούν σε αρχείο κειμένου μέσω του εικονιδίου Save to File. Αυτό είναι χρήσιμο για επισύναψη σε αιτήματα στο Jira ή ανάλυση μεγάλων συνεδριών. Το εξαγόμενο αρχείο καταγραφής μπορεί να ανοίξει σε οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου και να εφαρμοστεί grep για αναζήτηση προτύπων. Για μορφοποιημένη προβολή, χρησιμοποιήστε το εργαλείο logcat-color.

ADB logcat: εντολές τερματικού για προχωρημένη εργασία

ADB logcat — η έκδοση κονσόλας του Logcat, διαθέσιμη μέσω του Android Debug Bridge. Το κύριο πλεονέκτημά της είναι η δυνατότητα εκτέλεσης σε διακομιστές CI, σε σενάρια αυτοματισμού και σε συσκευές χωρίς Android Studio. Το ADB logcat υποστηρίζει όλα τα ίδια φίλτρα με το GUI, αλλά με την ευελιξία της γραμμής εντολών.

Βασικές εντολές

Η εντολή adb logcat χωρίς ορίσματα εμφανίζει ολόκληρο τον buffer σε πραγματικό χρόνο. Για διακοπή, χρησιμοποιήστε Ctrl+C. Η σημαία -c καθαρίζει τον buffer πριν από την έναρξη εγγραφής — αυτό είναι βολικό όταν πρέπει να απομονώσετε τα αρχεία καταγραφής της τρέχουσας δοκιμής από προηγούμενα μηνύματα. Η σημαία -b επιλέγει τον τύπο buffer: main, system, events, crash (Android 12+).

bash
# Εκκαθάριση buffer και έναρξη καταγραφής με ετικέτα MyApp
adb logcat -c
adb logcat MyApp:D *:S

# Αποθήκευση αρχείων καταγραφής σε αρχείο
adb logcat -d > logcat_dump.txt

# Φιλτράρισμα βάσει PID διεργασίας
adb logcat --pid=12345

Φιλτράρισμα με grep και awk

Ο συνδυασμός ADB με εργαλεία unix παρέχει μέγιστη ευελιξία. Για παράδειγμα, το φίλτρο "*:S TAG:D" εμφανίζει μόνο μηνύματα με ετικέτα TAG επιπέδου DEBUG και άνω, κρύβοντας όλα τα άλλα. Για προβολή μόνο Exception, χρησιμοποιήστε grep -i exception. Για ανάλυση συχνότητας σφαλμάτων, εφαρμόστε sort | uniq -c στη στήλη ετικέτας.

Logcat σε CI/CD

Σε διακομιστές CI, το Logcat χρησιμοποιείται για συλλογή διαγνωστικών κατά την εκτέλεση δοκιμών UI. Τυπικός αγωγός: πριν από την εκτέλεση δοκιμών, ο buffer καθαρίζεται· μετά την εκτέλεση δοκιμών, η απόρριψη αρχείων καταγραφής αποθηκεύεται ως τεχνούργημα κατασκευής. Εάν μια δοκιμή αποτύχει, βάσει των αρχείων καταγραφής μπορεί να προσδιοριστεί εάν η αποτυχία προκλήθηκε από ANR, μη διαχειριζόμενη εξαίρεση ή χρονικό όριο δικτύου.

Καταγραφή σε κώδικα: Log.d, Log.e και Timber

Η κλάση android.util.Log — το ενσωματωμένο API για εγγραφή μηνυμάτων στο Logcat. Οι Log.v, Log.d, Log.i, Log.w, Log.e και Log.wtf δέχονται μια ετικέτα (συμβολοσειρά) και ένα μήνυμα (συμβολοσειρά) ή μήνυμα + Throwable. Για μορφοποίηση μηνυμάτων, χρησιμοποιήστε String.format ή Kotlin String templates — αποφύγετε τη συνένωση συμβολοσειρών που δημιουργεί επιπλέον αντικείμενα στο heap.

Η βιβλιοθήκη Timber

Timber — μια δημοφιλής βιβλιοθήκη του Jake Wharton που εξαλείφει τα μειονεκτήματα του ενσωματωμένου Log API. Το Timber ορίζει αυτόματα την ετικέτα βάσει του ονόματος κλάσης που κάλεσε την καταγραφή και δεν απαιτεί μεταβίβαση ετικέτας σε κάθε κλήση. Το Timber υποστηρίζει επίσης υπό συνθήκη καταγραφή: στο build Release, οι κλήσεις Timber.v και Timber.d μπορούν να απενεργοποιηθούν με μία γραμμή στο Application.onCreate.

kotlin
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // Ενσωματωμένο Log API
        Log.d("MainActivity", "onCreate called")

        // Timber — αυτόματη ετικέτα βάσει ονόματος κλάσης
        Timber.d("onCreate called")
    }

    private fun loadData() {
        try {
            val result = fetchFromNetwork()
            Timber.i("Data loaded: $result")
        } catch (e: IOException) {
            Timber.e(e, "Failed to load data")
        }
    }
}

Υπό συνθήκη καταγραφή για Release

Σε build Release συνιστάται η απενεργοποίηση των αρχείων καταγραφής VERBOSE και DEBUG για μείωση του φόρτου στον buffer Logcat και αποκλεισμό διαρροής ευαίσθητων πληροφοριών. Το Timber λύνει αυτό το πρόβλημα μέσω PlantingTree: στο flavor Debug φυτεύεται DebugTree (καταγράφει τα πάντα), στο Release — CrashReportingTree (καταγράφει μόνο ERROR μέσω Crashlytics). Το ενσωματωμένο Log API δεν υποστηρίζει υπό συνθήκη καταγραφή — ο προγραμματιστής πρέπει να τυλίγει κάθε κλήση σε if (BuildConfig.DEBUG).

Συχνές Ερωτήσεις

Πώς να καθαρίσω τον buffer Logcat πριν από την εκτέλεση μιας δοκιμής;

Χρησιμοποιήστε την εντολή adb logcat -c πριν από την εκτέλεση της δοκιμής. Εναλλακτικά, στο Android Studio πατήστε το κουμπί Clear Logcat (κάδος απορριμμάτων) στο παράθυρο Logcat. Ο καθαρισμός δεν επηρεάζει τους buffers συστήματος άλλων διεργασιών, μόνο την τρέχουσα σύνδεση.

Πώς να αυξήσω το μέγεθος του buffer Logcat;

Εκτελέστε adb logcat -G 2M για να αυξήσετε τον buffer σε 2 MB. Το μέγιστο μέγεθος εξαρτάται από τη συσκευή: σε Android 10+ είναι διαθέσιμο έως 16 MB. Η αλλαγή διατηρείται μέχρι την επανεκκίνηση της συσκευής. Για μόνιμη διαμόρφωση, χρησιμοποιήστε build.prop στο device tree.

Γιατί το Logcat δεν εμφανίζει αρχεία καταγραφής της εφαρμογής;

Πιθανές αιτίες: η εφαρμογή εκτελείται σε λειτουργία Release (τα αρχεία καταγραφής Timber.v/d είναι απενεργοποιημένα), το φίλτρο Logcat κρύβει το απαραίτητο επίπεδο ή είστε συνδεδεμένοι σε λάθος συσκευή. Επίσης, ελέγξτε ότι στο Android Studio έχει επιλεγεί η διεργασία της εφαρμογής, όχι system_process.

Πώς να διαβάσω αρχεία καταγραφής σφαλμάτων από το Logcat;

Βρείτε τη γραμμή με FATAL EXCEPTION, κάτω από την οποία βρίσκεται πλήρες stack trace. Η πρώτη γραμμή περιέχει τον τύπο εξαίρεσης και το μήνυμα, οι επόμενες γραμμές την αλυσίδα κλήσεων με αναφορά αρχείου και γραμμής κώδικα. Χρησιμοποιήστε grep "FATAL EXCEPTION" για γρήγορη αναζήτηση μεταξύ όλων των αρχείων καταγραφής.

Τι είναι το ANR και πώς να το ανιχνεύσω στο Logcat;

ANR (Application Not Responding) — κατάσταση όπου το κύριο νήμα (UI thread) είναι αποκλεισμένο για περισσότερο από 5 δευτερόλεπτα. Στο Logcat, το ANR εμφανίζεται ως μήνυμα με ετικέτα ActivityManager και κείμενο "ANR in ..." με συνημμένο stack trace όλων των νημάτων. Χρησιμοποιήστε το φίλτρο tag:ActivityManager level:ERROR.

Περίληψη

  • Logcat — buffer συστήματος Android, προσβάσιμο μέσω ADB και του ενσωματωμένου παραθύρου Android Studio
  • Έξι επίπεδα καταγραφής (VERBOSE — ASSERT) καθορίζουν τη σπουδαιότητα και το όριο φιλτραρίσματος μηνυμάτων
  • Ετικέτες επιτρέπουν την ομαδοποίηση μηνυμάτων ανά ενότητα εφαρμογής για γρήγορο φιλτράρισμα
  • ADB logcat με grep/awk είναι πιο ευέλικτο από τη διεπαφή GUI και κατάλληλο για αγωγούς CI/CD
  • Timber απλοποιεί την καταγραφή, ορίζει αυτόματα ετικέτες και απενεργοποιεί τα επίπεδα Debug στο Release
  • Αρχεία καταγραφής σφαλμάτων με Exception και stack trace εισέρχονται αυτόματα στο Logcat σε κάθε αποτυχία
  • Αποθηκευμένα φίλτρα στο Android Studio επιταχύνουν την καθημερινή ανάλυση αρχείων καταγραφής

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης