.

Android Basics: Τι είναι τα log file και σε τι χρησιμεύουν;


 

Τα λειτουργικά συστήματα είναι σαν τα αεροπλάνα! Πρώτον γιατί μερικά από αυτά "πετάνε" και δεύτερον γιατί διαθέτουν και αυτά το λεγόμενο "μαύρο κουτί" (μα πού τα βρίκω;). Το μαύρο κουτί, είναι μία συσκευή η οποία καταγράφει τα πάντα κατά τη διάρκεια μίας πτήσης και ο λόγος ύπαρξής του είναι να μας πει τι έφταιξε σε μία ενδεχόμενη σύγκρουση (φτου, φτου, φτου, μακριά από μας). Κάτι τέτοιο είναι και τα log file στο Android (και σε όλα τα λειτουργικά συστήματα) και η δουλειά τους είναι να μας ενημερώσουν στο τι φταίει όταν μία εφαρμογή ή όλο το λειτουργικό σύστημα καταρρέει.

Τα log file ως επί των πλείστων είναι απλά αρχεία κειμένου (.txt) και είναι άχρηστα για το μέσο χρήστη, αποτελούν όμως το καλύτερο βοήθημα για έναν developer για να διορθώσει την εφαρμογή ή τη ROM του, όταν αυτή είναι προβληματική. Θα έχετε προσέξει σε διάφορες συζητήσεις στο ίντερνετ, όταν κάποιος ζητάει βοήθεια, να του απαντούν "στείλε μου το log file για να δω τι έγινε". Πού το βρίσκουμε όμως και πώς το στέλνουμε;

Αποθηκεύονται στη διαδρομή "/dev/log" και το κυριότερο από όλα είναι το "main" (logcat). Μέσα σε αυτά θα βρούμε γενικές πληροφορίες όπως το μοντέλο της συσκευής, τη ROM, τον kernel αλλά και τις τελευταίες κινήσεις μας ταξινομημένες σε χρονολογική σειρά. Ο διαμοιρασμός τους θα πρέπει να γίνεται με προσοχή καθώς περιέχουν προσωπικά δεδομένα τα οποία δεν είναι για τα μάτια όλων, δημοσιεύοντας το log μας όμως δε σημαίνει ότι κάποιος μπορεί να εξάγει πληροφορίες για τους κωδικούς ασφαλείας, να διαβάσει τα μηνύματά μας και άλλα τέτοια.

Όταν λοιπόν κρασάρει μια εφαρμογή, μπορούμε να άμεσα να πάρουμε το log file από τη συσκευή μας και να το στείλουμε στον developer για να δει πού βρίσκεται το σφάλμα. Αυτό γίνεται συνδέοντας τη συσκευή μας σε έναν υπολογιστή με εγκατεστημένο το Android SDK και δίνοντας, μέσα από το φάκελο του ADB, την εντολή:
adb shell logcat > log.txt

ή μέσω ενός Terminal Emulator με την εντολή:
logcat /sdcard/log.txt

Φυσικά υπάρχουν και ευκολότεροι τρόποι από αυτόν, ένας από τους οποίους είναι το Log Collector. Πρόκειται για μία εφαρμογή η οποία αντιγράφει το log file και το αποστέλλει με όποιον τρόπο θελήσουμε εμείς (email, SMS, barcode και άλλα). Επιλέγοντας για παράδειγμα το Log Collector και στη συνέχεια την εφαρμογή του Gmail, το log file επικολλάται στο email και το μόνο που μένει είναι να γράψουμε τη διεύθυνση του παραλήπτη. Θα βρείτε το Log Collector δωρεάν στο Play Store αλλά και στην επίσημη σελίδα του.


Εκτός από το "main" υπάρχουν και πιο εξειδικευμένα log τα οποία περιέχουν πιο συγκεκριμένες πληροφορίες για μέρη του συστήματός μας, όπως τον πυρήνα (επικοινωνία του Android με τα chip της συσκευής μας) και το radio (επικοινωνία της συσκευής με δίκτυα όπως WiFi, δίκτυο κινητής τηλεφωνίας και άλλα). Αυτά εξάγονται με επίσης εύκολο τρόπο, με τις παρακάτω εντολές:

μέσω ADB:

Radio
adb logcat -b radio > logcat_radio

Kernel (πυρήνας)
adb shell su -c dmesg > dmesg.log

Last kmsg (το log του πυρήνα, από την τελευταία επανεκκίνηση)
adb shell su -c "cat /proc/last_kmsg" > last_kmsg.log


μέσω Terminal Emulator:

Radio
logcat -b radio > /sdcard/logcat_radio

Kernel (πυρήνας)
su -c dmesg > /sdcard/dmesg.log

Last kmsg (το log του πυρήνα, από την τελευταία επανεκκίνηση)
su -c "cat /proc/last_kmsg" > /sdcard/last_kmsg.log

Ακόμα και αυτά όμως μπορούμε να τα εξάγουμε χρησιμοποιώντας απλές εφαρμογές και στην προκειμένη περίπτωση το SysLog που έχει δημιουργηθεί για αυτό το σκοπό και μπορούμε να το κατεβάσουμε δωρεάν από το Play Store.


Για εμάς λοιπόν μπορεί να μη σημαίνει τίποτα, αλλά η αποστολή του log στους developer είναι ιδιαίτερα σημαντική για την εξέλιξη και την αποσφαλμάτωση των εφαρμογών τους. Είναι κρίσιμο να τους βοηθήσουμε με αυτό τον τρόπο να βελτιώσουν τα δημιουργήματά τους, καθώς εμείς θα απολαύσουμε τους καρπούς της βελτιωμένης δουλειάς τους οπότε σκεφτείτε το σοβαρά την επόμενη φορά που θα σας ζητηθεί.

Θα ήθελα να ευχαριστήσω ιδιαίτερα τα μέλη της κοινότητας Android in Greece στο Google+, +Dimitris Comple και +Mhden Arnhtiko για την ιδέα και τη βοήθεια στη συγγραφή του άρθρου. 

 
© 2012-2015 Dr. Android | Original theme design by Main-Blogger - Blogger Template and Blogging Stuff | Material design by Chris K.