package Ġ` in `. tech now olf . super ch arger Ċ Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ Ċ class ĠLog Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠJust Ġandroid . util . Log . d ( tag : ĠString , Ġmsg : ĠString ) Ġbut Ġit Ġsp awns Ġtag Ġautomatically Ġfor Ġyou ĊĠĠĠĠĠĠĠ Ġfun Ġd ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( spawn Tag (), Ġmessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġd ( tag : ĠString Ġ= Ġ"", Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( spawn Tag (), Ġmessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġd ( message : ĠString , Ġthrowable : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( spawn Tag (), Ġmessage , Ġthrowable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġd ( tag : ĠString Ġ= Ġ"", Ġmessage : ĠString , Ġthrowable : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( spawn Tag (), Ġmessage , Ġthrowable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġadd Ġmore Ġmethods Ġfor Ġrest Ġof Ġthe Ġscopes . ĊĊĠĠĠĠĠĠĠ Ġ// ĠSp awns Ġtag ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġspawn Tag (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtracer Elem Ġ= ĠThread . currentThread (). stack Trace [ 4 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġspawn FileName ( tracer Elem . fileName ) Ġ+ Ġ"." Ġ+ Ġtracer Elem . methodName ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSp awns Ġfile Ġname ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġspawn FileName ( fileName : ĠString ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( fileName Ġ== Ġnull Ġ|| ĠText Utils . isEmpty ( fileName ) Ġ|| Ġ! fileName . contains (". ")) ĠfileName Ġelse ĠfileName . substring ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfileName . lastIndexOf (".") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ