Το Console.app είναι μια ενσωματωμένη εφαρμογή macOS για προβολή, φιλτράρισμα και ανάλυση αρχείων καταγραφής συστήματος και χρήστη. Εμφανίζει μηνύματα από το unified logging σύστημα της Apple (os_log) σε πραγματικό χρόνο, επιτρέποντας στον προγραμματιστή να βλέπει crashes, σφάλματα και μηνύματα εντοπισμού σφαλμάτων χωρίς σύνδεση στο Xcode. Σύμφωνα με το Apple Support, το Console.app υποστηρίζει φιλτράρισμα κατά subsystem, category, επίπεδο σοβαρότητας και διεργασία, καθώς και εξαγωγή αρχείων καταγραφής σε .logarchive για μεταφορά στον προγραμματιστή. Είναι ένα απαραίτητο εργαλείο για τη διάγνωση προβλημάτων σε Mac: τα φίλτρα και οι αποθηκευμένες αναζητήσεις επιτρέπουν τη γρήγορη εύρεση σφαλμάτων στην εφαρμογή ανάμεσα σε χιλιάδες μηνύματα συστήματος.
Κύρια σημεία
Το Console.app είναι μια γραφική διεπαφή για το unified logging σύστημα της Apple. Αντικατέστησε την παλιά εφαρμογή Console (ως μέρος του macOS) και παρέχει πρόσβαση σε όλα τα αρχεία καταγραφής συστήματος και εφαρμογών που καταγράφονται μέσω των API os_log, os_trace και syslog. Το Console.app είναι διαθέσιμο στο /Applications/Utilities/ σε κάθε Mac.
Σε αντίθεση με το Xcode, το οποίο εμφανίζει μόνο αρχεία καταγραφής για την εφαρμογή που εκτελείται από το IDE, το Console.app εμφανίζει τα αρχεία καταγραφής όλων των διεργασιών στο σύστημα ταυτόχρονα. Αυτό επιτρέπει τη διάγνωση προβλημάτων που προκύπτουν μόνο κατά την εκτέλεση της εφαρμογής εκτός Xcode ή στο παρασκήνιο. Το Console.app εμφανίζει επίσης αρχεία καταγραφής συστήματος — kernel, launchd, WindowServer, που είναι χρήσιμο για εντοπισμό σφαλμάτων χαμηλού επιπέδου.
Το Console.app δεν απαιτεί εγκατάσταση πρόσθετων εργαλείων ή σύνδεση στο διαδίκτυο. Όλα τα δεδομένα αποθηκεύονται τοπικά στη βάση δεδομένων .tracev3 και η εφαρμογή λειτουργεί εντελώς εκτός σύνδεσης. Για προβολή αρχείων καταγραφής από άλλο Mac ή συσκευή iOS χρησιμοποιείται η εντολή log collect ακολουθούμενη από το άνοιγμα του .logarchive στο Console.app.
Η διεπαφή του Console.app αποτελείται από τρεις κύριες περιοχές: το πλευρικό πλαίσιο με φίλτρα, τον πίνακα μηνυμάτων και το πλαίσιο λεπτομερειών του επιλεγμένου μηνύματος. Το πλευρικό πλαίσιο περιέχει τις ενότητες Devices (διαθέσιμες πηγές αρχείων καταγραφής), Reports (αναφορές συστήματος για σφάλματα) και Saved Searches (αποθηκευμένα ερωτήματα αναζήτησης).
Ο πίνακας μηνυμάτων εμφανίζει μια λίστα αρχείων καταγραφής με στήλες: Time (χρονική σφραγίδα), Category (κατηγορία), Level (επίπεδο σοβαρότητας — ένδειξη χρώματος), Process (όνομα διεργασίας), Message (κείμενο μηνύματος). Κάνοντας κλικ σε οποιοδήποτε μήνυμα ανοίγει το πλαίσιο λεπτομερειών, όπου εμφανίζονται subsystem, activity identifier, thread ID και το πλήρες κείμενο με μορφοποίηση.
Το Console.app τονίζει τα μηνύματα με χρώμα: κόκκινο για Fault, κίτρινο για Error, μπλε για Debug, γκρι για Info. Τα προεπιλεγμένα μηνύματα δεν τονίζονται. Αυτό επιτρέπει την οπτική σάρωση της ροής αρχείων καταγραφής και την άμεση παρατήρηση κρίσιμων συμβάντων.
// Αρχεία καταγραφής που θα εμφανιστούν στο Console.app
import OSLog
let logger = Logger(
subsystem: "com.example.myapp",
category: "network"
)
logger.error("Connection failed: timeout")
logger.debug("Retry attempt 3 of 5")
// Αυτά τα μηνύματα είναι ορατά στο Console.app με το φίλτρο “myapp”
Φιλτράρισμα — η κύρια λειτουργία του Console.app, που μετατρέπει μια ροή χιλιάδων μηνυμάτων ανά δευτερόλεπτο σε μια αναγνώσιμη λίστα. Το πεδίο αναζήτησης στο επάνω μέρος υποστηρίζει συνθήκες AND: πολλές λέξεις διαχωρισμένες με κενό εμφανίζουν μόνο μηνύματα που περιέχουν όλες τις λέξεις. Για παράδειγμα, myapp error θα εμφανίσει όλα τα αρχεία καταγραφής της εφαρμογής myapp με επίπεδο Error.
Φίλτρο Subsystem στο πλευρικό πλαίσιο επιτρέπει την επιλογή ενός ή περισσότερων subsystem. Αυτός είναι ο ταχύτερος τρόπος απομόνωσης των αρχείων καταγραφής μιας συγκεκριμένης εφαρμογής από μηνύματα συστήματος. Φίλτρο Category είναι διαθέσιμο μετά την επιλογή subsystem — εμφανίζει όλες τις κατηγορίες που χρησιμοποιεί η επιλεγμένη εφαρμογή. Φίλτρο Level περιορίζει τα μηνύματα κατά επίπεδο σοβαρότητας: μπορούν να εμφανιστούν μόνο σφάλματα ή μόνο μηνύματα εντοπισμού σφαλμάτων.
| Τύπος φίλτρου | Παράδειγμα | Αποτέλεσμα |
|---|---|---|
| Κείμενο | crash payment | Μηνύματα που περιέχουν crash ΚΑΙ payment |
| Subsystem | com.example.myapp | Μόνο αρχεία καταγραφής της καθορισμένης εφαρμογής |
| Level | Error + Fault | Μόνο σφάλματα και κρίσιμες βλάβες |
| Category | network | Μηνύματα με κατηγορία network |
| Χρόνος | Τελευταία 1 ώρα | Μηνύματα μόνο από το επιλεγμένο διάστημα |
Το πεδίο αναζήτησης του Console.app υποστηρίζει regex μέσω της κατασκευής REGEX:pattern. Παράδειγμα: REGEX:error.*tim(e|out) θα βρει όλα τα μηνύματα που περιέχουν “error” και μια λέξη που ξεκινά με “tim” και τελειώνει σε “e” ή “out”. Το regex λειτουργεί μόνο στο πεδίο αναζήτησης, όχι στα φίλτρα subsystem ή category.
Live — λειτουργία πραγματικού χρόνου, στην οποία το Console.app εμφανίζει νέα μηνύματα καθώς εμφανίζονται στον κυκλικό buffer του πυρήνα. Αυτή η λειτουργία είναι ενεργή από προεπιλογή και είναι κατάλληλη για εντοπισμό σφαλμάτων μιας εκτελούμενης εφαρμογής: εκκινείτε την εφαρμογή και βλέπετε τα αρχεία καταγραφής της με καθυστέρηση 1–5 δευτερολέπτων. Το κουμπί Live (ή ⌘L) ενεργοποιεί και απενεργοποιεί τη ροή.
Historical — λειτουργία προβολής αρχείου. Το Console.app αποθηκεύει όλα τα μηνύματα των τελευταίων 7–14 ημερών (ρυθμίζεται στο σύστημα) στη βάση δεδομένων .tracev3. Η λειτουργία Historical ανοίγει αυτό το αρχείο και επιτρέπει αναζήτηση με οποιοδήποτε φίλτρο, όχι μόνο στην τρέχουσα ροή. Είναι απαραίτητο για ανάλυση προβλημάτων που συνέβησαν τη νύχτα ή όταν η εφαρμογή λειτουργούσε χωρίς σύνδεση στο Mac.
Η εναλλαγή μεταξύ λειτουργιών γίνεται μέσω του κουμπιού Live στη γραμμή εργαλείων. Όταν το Live είναι απενεργοποιημένο, το Console.app εμφανίζει ιστορικά δεδομένα. Σε αυτή τη λειτουργία, μπορείτε να πλοηγηθείτε στη γραμμή χρόνου χρησιμοποιώντας το ημερολόγιο ή τα κουμπιά ← →. Τα ιστορικά δεδομένα είναι διαθέσιμα μόνο για αρχεία καταγραφής που έχουν αποθηκευτεί στο δίσκο — μηνύματα που έχουν αντικατασταθεί στον κυκλικό buffer δεν εισέρχονται στο αρχείο.
Το Console.app υποστηρίζει εξαγωγή φιλτραρισμένων αρχείων καταγραφής σε διάφορες μορφές. File → Export → Save επιλέγει τη μορφή: .logarchive (εγγενής μορφή Apple, περιλαμβάνει όλα τα μεταδεδομένα), .txt (απλό κείμενο με στήλες) και .json (δομημένα δεδομένα με πεδία). Για επισύναψη σε αναφορά σφάλματος χρησιμοποιήστε .logarchive — μπορεί να ανοίξει σε οποιοδήποτε Mac στο Console.app.
Εξαγωγή από συσκευή iOS: μέσω Xcode (Devices → Open Console) ή μέσω της εντολής log collect --device --output ./archive.logarchive στο τερματικό. Το ληφθέν .logarchive ανοίξτε στο Console.app στο Mac — τα αρχεία καταγραφής προέρχονται από την απομακρυσμένη συσκευή, αλλά τα φίλτρα και η αναζήτηση λειτουργούν όπως με τα τοπικά αρχεία καταγραφής.
// Εξαγωγή αρχείων καταγραφής συσκευής iOS μέσω τερματικού
// log collect --device --output ./ios_crash.logarchive
// log show --subsystem com.example.app --last 1h --output json
// Παράδειγμα: εξαγωγή αρχείων καταγραφής της τελευταίας ώρας
// log show --predicate 'subsystem == "com.example.myapp"' \
// --info --debug --last 1h --output json > logs.json
// Ανάλυση εξαγόμενων αρχείων καταγραφής σε Swift
let jsonData = try Data(contentsOf: URL(fileURLWithPath: "logs.json"))
let decoded = try JSONDecoder()
.decode([LogEntry].self, from: jsonData)
.logarchive — η βέλτιστη μορφή για αποστολή σε συνάδελφο ή επισύναψη σε δελτίο JIRA. Το αρχείο περιέχει όχι μόνο μηνύματα, αλλά και subsystem, category, timestamps, thread IDs και όλα τα μεταδεδομένα. Το μέγεθος του αρχείου είναι σημαντικά μικρότερο από τα ακατέργαστα αρχεία καταγραφής χάρη στη συμπίεση .tracev3. Πριν από την αποστολή βεβαιωθείτε ότι τα αρχεία καταγραφής δεν περιέχουν ιδιωτικά δεδομένα: χρησιμοποιήστε το φίλτρο subsystem της εφαρμογής σας για να εξαιρέσετε αρχεία καταγραφής συστήματος που μπορεί να περιέχουν εμπιστευτικές πληροφορίες άλλων διεργασιών.
Διάγνωση crash χωρίς Xcode: εάν η εφαρμογή κατέρρευσε κατά την εκκίνηση εκτός Xcode, το Console.app θα εμφανίσει ένα μήνυμα Fault από τη διεργασία. Βρείτε στο πλευρικό πλαίσιο Reports → Crash Reports — εκεί εμφανίζονται πλήρεις αναφορές κατάρρευσης με υπογραφή και στοίβα. Χρησιμοποιήστε το φίλτρο subsystem για την εφαρμογή σας και ορίστε το επίπεδο Error+Fault για να δείτε όλα τα κρίσιμα συμβάντα πριν από την κατάρρευση.
Το Console.app επιτρέπει την παρακολούθηση καθυστερήσεων στην εφαρμογή βάσει χρονικών σφραγίδων. Εάν μεταξύ δύο σχετικών μηνυμάτων (για παράδειγμα, “Το αίτημα στάλθηκε” και “Η απάντηση ελήφθη”) έχει περάσει περισσότερος χρόνος από τον αναμενόμενο — αυτό είναι σήμα προβλήματος απόδοσης. Το φίλτρο κατά subsystem της εφαρμογής σας με επίπεδο Default θα εμφανίσει όλα τα βασικά συμβάντα με ακρίβεια χιλιοστού του δευτερολέπτου.
Αναζήτηση διαρροής μνήμης: σε περίπτωση διαρροής μνήμης, το σύστημα στέλνει προειδοποίηση μνήμης μέσω os_log με κατηγορία memory και επίπεδο Error. Στο Console.app φιλτράρετε κατά τη λέξη memory και επιλέξτε το subsystem σας. Εάν η προειδοποίηση επαναλαμβάνεται κάθε 5–10 δευτερόλεπτα — η εφαρμογή καταναλώνει ενεργά μνήμη. Επιπλέον, μπορείτε να ενεργοποιήσετε αρχεία καταγραφής Debug για παρακολούθηση κατανομών.
Εντοπισμός σφαλμάτων αιτημάτων δικτύου: εάν η εφαρμογή σας χρησιμοποιεί os_log για συμβάντα δικτύου, το Console.app θα εμφανίσει όλα τα αιτήματα και τις αποκρίσεις με χρονομέτρηση. Το φίλτρο category=network μειώνει το θόρυβο. Εάν ο χρόνος μεταξύ αιτήματος και απόκρισης υπερβαίνει τον αναμενόμενο, αναζητήστε μηνύματα με level=Error — αυτά θα υποδείξουν χρονικές υπερβάσεις ή σφάλματα DNS.
// Δομή για ανάλυση αρχείων καταγραφής JSON του Console.app
struct LogEntry: Codable {
let timestamp: String
let eventMessage: String
let subsystem: String
let category: String
let messageType: UInt8
var level: String {
switch messageType {
case 1: return "Fault"
case 16: return "Error"
case 17: return "Debug"
default: return "Default"
}
}
}
Συχνές Ερωτήσεις
Το Console.app βρίσκεται στο φάκελο /Applications/Utilities/. Μπορεί να ανοίξει μέσω του Spotlight (⌘Space → Console) ή μέσω του Finder → Προγράμματα → Βοηθήματα → Κονσόλα. Το εικονίδιο της εφαρμογής είναι μια στυλιζαρισμένη φούσκα ομιλίας με γρανάζι.
Το os_log αποκρύπτει συμβολοσειρές και αντικείμενα ως private από προεπιλογή. Το Console.app τα εμφανίζει ως <private> σε λειτουργία παραγωγής. Για να δείτε τις πραγματικές τιμές, εκκινήστε την εφαρμογή από το Xcode ή ενεργοποιήστε ένα προφίλ συλλογής με επίπεδο Debug για το subsystem σας.
Στο πλευρικό πλαίσιο του Console.app, επιλέξτε το subsystem σας (com.example.app) στην ενότητα Devices → η συσκευή σας → Processes. Εναλλακτικά — εισάγετε το όνομα της διεργασίας στο πεδίο αναζήτησης και επιλέξτε Process: YourApp από την αναπτυσσόμενη λίστα.
Από προεπιλογή, το macOS αποθηκεύει αρχεία καταγραφής στο .tracev3 για 7–14 ημέρες ανάλογα με τον διαθέσιμο χώρο στο δίσκο. Σε περίπτωση έλλειψης χώρου, τα παλαιότερα αρχεία καταγραφής διαγράφονται αυτόματα. Η περίοδος αποθήκευσης μπορεί να αυξηθεί μέσω sudo log config, αλλά αυτό δεν συνιστάται για μηχανήματα παραγωγής.
Ναι, συνδέστε τη συσκευή iOS στο Mac μέσω USB, ανοίξτε το Xcode → Devices → επιλέξτε τη συσκευή → Open Console. Το Console.app θα εμφανίσει τα αρχεία καταγραφής της συνδεδεμένης συσκευής σε πραγματικό χρόνο. Για αυτόνομη συλλογή χρησιμοποιήστε την log collect στο τερματικό με τη σημαία --device.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης