JavaScript required
We’re sorry, but Coda doesn’t work properly without JavaScript enabled.
Skip to content
Share
Explore
Using Logcat to Trace Code Execution
Student Guide: Using Logcat to Trace Code Execution
What is Logcat?
Logcat is Android's logging system that displays system messages, including:
Your app's debug messages
System error messages
Stack traces when your app crashes
How to Access Logcat in Android Studio
Open Logcat Panel
:
View → Tool Windows → Logcat
Or click "Logcat" tab at the bottom of Android Studio
Filter Your Logs
:
In the search box, type:
DataTypesDemo
This filters to show only logs with our TAG
Log Levels
(color-coded):
VERBOSE
(V) - Gray - Everything
DEBUG
(D) - Blue - Debug information
INFO
(I) - Green - Informational messages
WARN
(W) - Orange - Warnings
ERROR
(E) - Red - Errors
Understanding Our Log Statements
Basic Log Pattern:
kotlin
Log.d(TAG, "message")
Log.d
= Debug level log
TAG
= "DataTypesDemo" (for filtering)
"message"
= What to display
What You'll See in Logcat:
Activity Lifecycle
:
D/DataTypesDemo: ====================================
D/DataTypesDemo: onCreate: Activity starting
D/DataTypesDemo: ====================================
Button Clicks
:
D/DataTypesDemo: BUTTON CLICKED: Store Data
Data Storage
:
D/DataTypesDemo: Storing String - Key: 'username', Value: 'john_doe'
D/DataTypesDemo: Storing Int - Key: 'user_age', Value: 25
D/DataTypesDemo: Storing Boolean - Key: 'is_premium', Value: true
Data Retrieval
:
D/DataTypesDemo: Retrieved String - Username: 'john_doe'
D/DataTypesDemo: Retrieved Int - Age: 25
Exercise: Trace the Execution Flow
Run the app
and open Logcat
Filter
by "DataTypesDemo"
Click "Store All Data Types"
and observe:
Each data type being stored
The order of operations
When
apply()
is called
Click "Retrieve All Data"
and observe:
Each value being retrieved
Default values when keys don't exist
The complete list of stored keys
Click "Clear All Data"
and observe:
What data exists before clearing
The clear operation
Adding Your Own Logs
Try adding these log statements to understand the flow better:
kotlin
// Before storing
Log.d(TAG, "User clicked store button at ${System.currentTimeMillis()}")
// After retrieving
Log.d(TAG, "Successfully retrieved ${allEntries.size} items")
// In catch blocks
Log.e(TAG, "Failed to store data", exception)
Tips for Effective Logging
Use descriptive messages
:
kotlin
// Bad
Log.d(TAG, "data: $data")
// Good
Log.d(TAG, "Retrieved user preferences - Theme: $theme, Language: $language")
Log method entry/exit
:
kotlin
Log.d(TAG, "entering storeUserData()")
// ... method code ...
Log.d(TAG, "exiting storeUserData() - success")
Use appropriate log levels
:
Debug (Log.d) - Development info
Error (Log.e) - Actual errors
Warning (Log.w) - Potential issues
Clean up before release
:
Remove or disable verbose logs
Keep only essential error logging
Common Logcat Filters
Tag filter
:
tag:DataTypesDemo
Package filter
:
package:com.example.sharedpreferencesdemo
Log level
:
level:ERROR
(shows only errors)
Text search
: Any text in the message
Debugging Challenge
Add logs to answer these questions:
How long does it take to store all data? (Hint: log timestamps)
What happens if you retrieve data before storing?
Can you store null values? (Try it and check logs)
Remember: Logcat is your window into what your app is doing behind the scenes!
Want to print your doc?
This is not the way.
Try clicking the ··· in the right corner or using a keyboard shortcut (
Ctrl
P
) instead.