Here’s an example. Let’s say you have a method that calculates the combined value of two ages. You pass the two ages as parameters and the method calculates and returns the total. You run the app and for some reason the method does not return the results that you expected. By using Android’s Log class, you can add the two (Log.i(tag, msg)) lines to the calculateCombinedAge() method like this:
Now when you run the app, the system displays the values of ageOne, ageTwo and combinedAges, and you are able to check if these are correct. If the ages passed as parameters are correct but the return value is incorrect, then there is probably something wrong with the logic that calculates the total. On the other hand if the ages are wrong, then the problem possibly lies elsewhere, perhaps where these ages are input. You could then add more log tags to your code and eventually track down the error.
You should not use LogCat messages in live apps as it will affect the performance of the app.
Filter the Log output to debug Android code
Order of priority
All log messages have a priority indicator and a tag making it easy for you to identify them:
Here we see (marked in yellow) the I (priority) and System.out (tag) identifiers associated with these messages. The tag identifies the component where the message originated while the priority indicates the priority of the message.
Here’s the order of priority (from lowest to highest):
- V – Verbose
- D – Debug
- I – Info
- W – Warning
- E – Error
- F – Fatal
- S – Silent
Have a look at the preceding image and you’ll see a couple of Debug and Info messages and one Error message, which is in red.
The logcat continually prints messages to the LogCat while the app is running. You probably won’t be interested in most of these messages.
As mentioned earlier, you can create your own tags to easily identify the messages that you are interested in. You filter the messages by using filter expressions which isolate certain tags, the tags that you are interested in, so you won’t see any of the other messages. Here’s an example:
First, you need to declare a tag string. Good coding practice is to declare the tag as a constant:
You can then add this line, Log.i(tag,msg), anywhere in your code which will cause the logcat to display an appropriate message. So for example:
Will display the following in the LogCat:
Notice the priority I (Info), the tag (CLOCKS) and the message (Action done – name: france).
To debug your code, display the LogCat while your app is running
Once you’ve declared the tag as a constant and included the Log.i(tag,msg) line in your code, you need to run your app and display the logcat.
Displaying the LogCat in Android Studio
To display the LogCat in Android Studio, from the Main menu select View>Tool Buttons to display the tool buttons at the bottom-left of the screen. Click on 6: Android to display the LogCat:
You can also display the LogCat by pressing Alt + 6.
Displaying the LogCat in Eclipse
To display the LogCat in Eclipse, select DDMS from the top menu bar:
Then from the top menu select Window>Show View>LogCat
Filtering the LogCat using filter expressions
At this stage, the logcat probably displays a lot of messages and you won’t be able to see your specific messages. You’ll need to set a filter to display only your messages.
Setting a filter expression in Android Studio
To set a filter expression in Android Studio, make sure that the LogCat window is open and then display the drop-down list of filters (see image below):
Select Edit Filter Configuration, click on the green + and type in the name of your filter as well as the Log Tag and press OK to save:
Now (using the above example) select the Clocks filter and you should see all the messages with the CLOCKS tag:
Setting a filter expression in Eclipse
Make sure that the LogCat is displayed:
The Eclipse LogCat display differs from the Android Studio’s display. Notice the priority level on the left and the separate Tag column. Errors are displayed in red and Warnings in orange.
To set up a filter expression, you need to display the filters on the left. If they’re not showing, you can display them by selecting the button to the right of the red cross:
Tip: use the scroll lock button (the arrow) to stop the display from scrolling.
To set up a filter, click on the green cross and a pop-up window displays:
Fill in the Filter Name and Log Tag.
This is what is displayed in the LogCat when you select the files filter:
I hope this tutorial on using the LogCat helps you to debug your Android apps.