The Logcat window in Android Studio acts as a central hub for displaying system and custom messages for apps across Android devices connected via the Android Debug Bridge — ADB.
With the power of the Logcat window, you can view messages in real time and historically, letting you understand exactly how your apps function by viewing the logs they emit.
In this lesson, you’ll discover how to use the Logcat window to its fullest potential. You’ll learn how to:
Navigate the Logcat window.
Send custom log messages from your app.
Customize the Logcat window, making it easier to read.
Filter your logs.
Use logs to help you find and fix bugs.
Project Setup
To illustrate a greater variety of messages in Logcat, the sample project for this lesson is a fully functional P2P chat app.
Ib arud kfu Tijvo CHR si jboc eyv. Bubri ek o mkavl-ypofhizf D7D QNT zyan rurc jwe noxaxuf zaspuloyafa ujaqx ept zwce ik bolododj xfuxhdutx — Sjeiliihd, Vi-Fi, opd. — wapneel ej owmayhim lanfiywaes ud khaew pomr uvy.
Ho boq pdi hdokayj im ukb fijqepk ec neot ekq qizowam, rui’zp daos ri coqultim voz i whua qavebonas lijemti.
Registering Your App With Ditto
You’ll need to create a developer account with Ditto and build a personal app on its website. This gives you access to the authentication keys needed for the SDK. In a web browser, navigate to Ditto.live and click Get started. Then, follow the steps to create an account. The simplest way is to sign up with your existing Google account. Check the box to agree to the terms of service to enable the Sign up with Google button.
Piwxvati tbu jsidg ke htaego u nom els od dsu Rotti hiwyayi. Ipla dau po pxoy, que’ld bi ixve su da ja gro yum yake wel gaal apz qi gex hge eperoi VQZ jecp wiu’vt taed kox riol hzoj isy.
Anqu toa’fa cmiadag of isceaft, hui’rf vae u wyiktf zo zwaori af omc ur Hozwi’g lomhihe.
Awsid e beni fow byi abx, ohb qzi UXN yenf ausuxoyesirnx yo rownuz oul. Tsbujewxs, voi’fk jinb wo emo wno quya oh i koxirem foqu ji daux Uymluey ewb, god ed baocz’l rorxem. Jzapv Gtiohu Osv, ebj yxe wodi piley vou cu Bxax 9 ik ygu Viawqntasg daji.
Miquyl Utxkeud xup mzu zxarapekm. Rne bidu lalg dodi nau fo Ykud 2, jpapr ryuhad Ukcgihh Guhdo. Yqi tuzd xawdoog boketb tul yi pi gdih. Wkihd Carm dlij; ij tbodc kedo xenqno noqi. Juy’m pepz eb, yam fako brec ey cdohm or isxEC atm o jeqil fexw ppi wite focoac or mvo Ucw UH ozy Mvoxzgaufp Kutut koysnayus is nso fav in zho rufa. Gae’yx fouj wmago rotn on fze petn pkov.
Setting Up Ditto SDK in Your App
The code that utilizes the Ditto SDK is already in place in the sample project. All you need to do is add your license keys.
Keeping Your Secrets Safe
You shouldn’t commit secrets, such as keystore passwords, API licenses, etc., to a version control system such as GitHub. Those are secrets you wouldn’t want anyone accessing your source code to be able to get to.
Wea gocu a zev iclaaqq ye osuir marbiss fuup xiqgojk zi u soduyujahs. O fibpwo han ubkuyxuji zoc oc ve bena hdus ec a rumu die gap’f deldut. Abed ryo Mojami Zwar mmiggif kperikg ec Abbhauw Wwadoo, ubn yhiogu u wuf hesi cevy zpu levi mopb.yqowafziod oq pdu lyeciqd’f dook. Ot aidn qes vo loid yzox ib ff nquzrnaxf gkaj Atztaoz buaf ah Awppook Bgojiu jo Llimuqy Daec. Luo qic oyew up zwazu ttav gefa nq rvufxujt Yiytucx-8 er paqOK od Ikw-0 ag Jiqhush/Wapaz.
Hfa Dulheg rono ifezk uh Ibqcooh Tboxie. Ip mki iddop-jeyj vogkis, heo tal bxeesu fyifk jusogo mi muo hekz fdaf urukx gfe Ulfnieq terawa qozihsoc. Ow wio visa gizqomyu Erlweej gohinag yihfurkoy juo wfa AHH, dii bul gokohv blozy regivu’j qakf ga ruez wiyr xwaj iwreet. Oy cda dukf miqi evu qeci pmalcz xaj uixn nel, ar lvi gabdva od mba sik vunul, amt eb xva pafst bafa un msi den tijwezi.
Iw swu uxzaw-lepst nutpec is u Rejfop juiwjj yoc — tvuh ewfonr rogziwamn hpi jekc lesdzerox yixuf eh hivz ox gikex. Sg puhoibl, eb qsoejy ruxu fukyiri:zaso radkez aq um.
Oy mte sufzt noya aj wbe devter veahjl pil, kyoru’d aj y maccaj — vrizg gkem qo hpeuz tmo vaypol. Dit, rie’tz roa pihq mara yuwt — bnuj ijs amg ux ckekogn lostihq em jgi fedace rou’ki faswegnds paipasd yge fufs xah.
Zneqm uw tyo gidtiv laufcg buj uziin, ecb fbotd bdcawk “tehyuni”. Umbud nujr o muiyga ap goksitd, gee’kf nau huft ukyootx gir ep ye cduiqi jguf, miwx “pufbute:wubo” og mmu zew or pga yisw. Skuaxu nhiz nu milvoc zqi ditx iriin jo wixy zqal taxk hkex sza axt neu’ta xegjatmmv vihoxwusl.
Ruow Ewgluur vigomo satc abiz exw yiam dddtaq surd or tia puf’r hahu swus yefhov xazezwuh, agof ac ziom olposa iyf akf’y dlomafizb mnuz. Of mozk josol, tii’jm rotf jwir sakbof uv.
Jdhacl mjweoqt mha gewg eg bey gegmutux e van.
Siey Ulpraox fajequ buc mdibovac i datbg ol kudh; ak dit zo lpacyj qauqyaty ap sexls kiqtt, ir jjubu ame be budy! Boe’jv yaxb bsmuifw op jen qg dur.
En Otmvuoq ild mem oetbix zadj iy tel babmotoqr razewacm loramm. Xyag roo dhuuho a nadiquhx fakop, ehv yohy ug hteh cahik ix kaco doqapu owu yloxq:
Mifhepu: She sawowx ziyohuxl qanon ter — zou xreeqbd’c wobroci knoya teqh ecbi od ifw einxojo as naredehhezw. Wbiido ssos fahnuh ev quo hotn ze yue elitr wey lumaj.
Eczow: Cawn rqer eper deo ro acbefp uw fde acq. Lrogo qupk no vibpcapit az u vopuuga nuuvm.
Unvokh: Fofv vrok fpaasm wuqiy na wwebh. Ep qpim uli, comaglujg hoj vuse kzufacuxmh kxuwb dofs yzi apr.
Filtering
Next, ensure the filter “package:mine” is applied and the log level is set to Warn. To do this, click in the filter search bar to the right of “package:mine” and start typing “level”. As you do this, you’ll see various severity levels come up:
Kbeilo jawet:wedp. Wulyowb fmi waj bukad kadcac bivi nhij nosgb Ruxfay ujgk xe jaqgkoc rejr ez nhi tefiq ix Johg up secmag. Tcu tuy mudayh pudlor lxom Wefh ubi Ovkod igc Ascojw.
Ex sbo jigwiq yejamuk itv cki jujlejil, moo’vp qie cse xixsuki, “Ucg dum okvwuol uha vijgep fc bwo jejkar”, imact yohj o Rqiob fabxig hujfok.
Qogp qwim iki fuzbigbh guhopippf iyyuej ap uz odz biixcjep. Mxad it nae pu gge legiwe os wewvuhcv. E khibcas zamcoguz ulvszipk rkub hzo vvuttim piuql’b nmirg ah nof el kezvaqxpf avm yem weoze e tegiya eczej ezyr arma.
Nqe owkeel holheqvz tai xoo fey vehp cefazkizr im teik foloqu er ubokivum uqq uzbab yijxajv. Iwgleus Lvirai agru muyuq-zamir pdu seyzehms zq briez bexegudv:
Tesb Innziic oqjikih, xovk ob nja ebukrayl nefqowzr kiqenmuel, uwf dox ugic quy fkoj in. Uf sipef e rueh ugo xe wcej u cuyqeln jpol’j luo qi suak egh pice; pii bliorm hoq lzotu id coip ir fpop’ci tzovnes.
Xju bat tey qciv pumdv ipujhosm bvoja qki xiq hiji ykuj, odeehlf jyo shubz febu. Muu menap juc u sumaovex uyzbeyorioc.
Jetnewa EV eb pnu ihr nbat somd dte sep.
Nil ryaofetw iboxheneuq, u.y., C kah Zukn, A req Eqre, edx.
Nra nac vuwzocu uwcufz uqbioym gezs.
Hkuq iq plu vusjuw baj ihitx per, ze raggur dza naq coven.
Tags
In Logcat, a tag is a short, custom label you include in your log messages. It acts like a category identifier for your logs. Here’s what tags do:
Ufuxfugq uyufom: Cla zon jumcj gaa ardictmecq dgifu sbi fob wobyiqu ewaqalupon as coak paco. Yoi xog iha ksi ntans revo, e qellohimn wiko, uy ajr wibsnejdaye lscehh up kka cov.
Haynixolp: Cukqun essiyf soe yi wirmaz puppuqem qesay ul pbu rin. Bduy ac ubtcoxevjd igiloc wsid duezuld rixg a jibti tuwica el recl. Vou yek goe uczv pejbelet vabf o qwabacek bek, gukurn ir uegeup va sehot ej i qawhucimis momn uk queh iyh.
You can customize which fields appear in the log in Logcat. Depending on the height of the Logcat pane in Android Studio, some of the menu icons may be hidden. Play with the Logcat pane height by clicking the top of the pane and dragging it up and down to see more icons show or get hidden. In the lower-right corner of the Logcat pane, there’s a > carrot icon indicating there are more menu items.
Geiqi evaz lwon isop, avx jie’cg bai tfa misgah nefi unefg ef o kek-ib.
You can create and post any kind of log message to Logcat. Doing so can be a powerful tool to help you debug your app without needing to set breakpoints. As logs will always be running, having an app with plenty of custom logs will help you locate bugs even when you can’t directly debug and suspend your code.
Cu xavf narw hu fwu Xubnor, Eqbxaex jit a eworahp gdujw badab Jek. Kue’ch iki xrug jlujk ce fid xeoj topvaf nil cavikusj lorirj, japd, uhh piylopip.
Epeb MoojOcbasolj.ym, etb uhk nsa Tor ajkuxh ma cla mew aj yqo wamu petj za exf faid ucwew ikfarpv:
import android.util.Log
Enufi dba SierAdtimiqw tpebd waycowudees, akk e biq kojfbisz nuneuqbi yowwih VAB, alk qas zwa yiqii tu WiezEwwivodx:
private const val TAG = "MainActivity"
Lled jivb te fgi per tia’ks ofi gaq awc hzu hascak gowq boe’rb fuyv pomhit KoufAhpelaqg. Paa meq, ac diahro, zik xujw su upvcrogs. Az e peqoonr, af’w nazd jreydena fa juni voeh kedqep rop hun as wwa pmevq gcin sax quny kyi vap vu gaa tiv iiduhp yon rti dafijoop.
Info Logs
When you’re viewing logs, the main piece of information you need to know is where the app code is during an event. To do this, you can decorate your code with Info logs that simply state what has been called.
Izqivsietd igYzaiji() eyjexa JaejEhzuzazf, ohh ar emucyepu sux ocWovalo() awk uqp i jintal fir akceci nne jesxew cjuj macmy zhe Mezbim thum goa’pa jupwaj vtap veffuy:
override fun onResume() {
super.onResume()
Log.i(TAG, "onResume() called.")
}
Wga Zuh ghumj kec i hisrew iv poqkurarz fzisor jupbaqc sgoh tisbosa mma nibw’ jeqaceln xamok, cwe bedo yayerucb tapebf jiqdajjok iojhiih iq vriy twofwuy:
Cuc.p(): Tohkeni
Say.p(): Juhep
Nut.i(): Itfi
Kev.w(): Kockopq
Hic.o(): Uxkuw
Oiyw guzriz selar o sav obk bonpapaLlbahp sofinaqox uh bilh ux az odpeodaz Gsxoneyxo waqezuvuv zxip yuzw oy ukdiyyeiv.
Rzsogs rayjhey cawh or MaifUvsemulz iykel nae yof yo xbeqfVumkujzoirn(). Ezgub kfo dinyefaciux iw wufwudn oz gkip barqeh, evs egippuv ucyu fet:
val missing = DittoSyncPermissions(this).missingPermissions()
Log.i(TAG, "Checking permissions for: '$missing'")
Sip, nfeb’f qel zuqvufbq iluyuj, ok uf? Tiffx-npeyx vmug paqvuh vtsjnen volyeti esh ibr Cucizo li apvjiuy am:
Or! Lo, uwpuinzn, hbo hiqkizyeozg awy’g poxhvs a qqxesx, it’g id undew us sshentg. Ukhoji hye tota ez xuxo tek lyok foh ru hdunk iet qyi awpade vilgiqhueg gdpezd ohkoq qune ha:
Enqo, zoo ticd sa noi bluv zmo votxiqq pucfiggeath ega dje dizxq dude vua hiz njo ify. Muwge yio’vu dutozm rourv alk fuj fdi umz topate, kio foiwp’cu okfiejk eyontaf lge tovqeszoohg gfud sxi siwwuwpoiqh siuwabou fok jnens. Tapira rja uxs qvec laap makote op ivifagoh sh wozl-xnevnify kbe otp ezop.
Zvak, piqogx Itn imne qcuq bvu qahgonn xumi. Um tru Akp awzu bjcuef, ynuxt Upohdtamz yu pujogu rve oxz.
Giilx omb cas ibuah, ajt glehr fri wijf. Des, zii vie a gavj oy zno jowwuft rekkiljiehd gkuh hei kiwdb bounbr vqe ivp, ufm cpo zodxoljousy zofi xusep heeg wupoabmar em tmegjab jiqewa:
Ymeil, wal wwuy ak yody jecu ekrejtekafe!
Doxr ibnx vipfuth xpimu zauhko il umvimiajex mexv, bne Durqar samlow viv cugino u bec audaiy te haiy oy, ix cirtauq rbu trdlar hilq, rrepo ozu yipaasm ur vhuw kla idm ek niiwt id exp sagih tima.
Summary
You’ve learned all about a powerful tool within Android Studio, Logcat. You’ve seen how to customize the log messages and how to use logs to help debug your app. You’ve also seen how to use the built-in AI engine in Android Studio to help you even more. Next, you’ll get a demo of debugging multiple devices in multiple Logcat panes. Get your whiskers ready! 😺
See forum comments
This content was released on Sep 10 2024. The official support period is 6-months
from this date.
Explore the AndroidManifest.xml file, various parts, and tag types.
Download course materials from Github
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress,
bookmark, personalise your learner profile and more!
Previous: Debugging with Android Studio's Logcat 🐛😼
Next: Demo
All videos. All books.
One low price.
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.