package Ġcom . ok 2 c . hc . android . logging Ċ Ċ import Ġandroid . util . Log Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ import Ġjava . util . concurrent . Concurrent Map Ċ import Ġorg . slf 4 j . I LoggerFactory Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . helpers . Marker Ign oring Base Ċ import Ġorg . slf 4 j . helpers . Message Formatter Ċ Ċ class ĠAndroid LoggerFactory Ġ: ĠI LoggerFactory Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlogger Map : ĠConcurrent Map < String , ĠLogger > Ġ= ĠConcurrent HashMap () ĊĊĠĠĠ Ġprivate Ġfun Ġlogger Name To Tag ( logger Name : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġlogger Name . length ĊĠĠĠĠĠĠĠ Ġif Ġ( length Ġ<= Ġ 2 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlogger Name ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġlast Period Ġ= Ġlogger Name . lastIndexOf (".") ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( length Ġ- Ġ( last Period Ġ+ Ġ 1 ) Ġ<= Ġ 2 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger Name . substring ( last Period Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger Name . substring ( logger Name . length Ġ- Ġ 2 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Logger ( name : ĠString ): ĠLogger Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtag : ĠString Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ== Ġ" org . apache . hc . client 5 . http . wire " Ġ-> Ġ" HttpClient Wire " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ== Ġ" org . apache . hc . client 5 . http . headers " Ġ-> Ġ" HttpClient Header " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname . startsWith (" org . apache . hc .") Ġ-> Ġ" HttpClient " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġlogger Name To Tag ( name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġlogger Ġ= Ġlogger Map [ tag ] ĊĠĠĠĠĠĠĠ Ġif Ġ( logger Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Logger : ĠLogger Ġ= ĠAndroid Logger ( tag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger Ġ= Ġlogger Map . put If Absent ( name , Ġnew Logger ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( logger Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger Ġ= Ġnew Logger ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlogger ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠINSTANCE Ġ= ĠAndroid LoggerFactory () ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ internal Ġclass ĠAndroid Logger ( name : ĠString ) Ġ: ĠMarker Ign oring Base () Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġname ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Log gable ( priority : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLog . is Log gable ( name , Ġpriority ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlog ( priority : ĠInt , Ġmessage : ĠString , Ġthrowable : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . println ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpriority , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( throwable Ġ!= Ġnull ) Ġ"$ message \ n ${ Log . get StackTrace String ( throwable )}" Ġelse Ġmessage ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlog Formatted ( priority : ĠInt , Ġformat : ĠString , Ġvar arg Ġarg Array : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Log gable ( priority )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġft Ġ= ĠMessage Formatter . array Format ( format , Ġarg Array ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog ( priority , Ġft . message , Ġft . throwable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠlogMessage ( priority : ĠInt , Ġmessage : ĠString , Ġthrowable : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Log gable ( priority )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog ( priority , Ġmessage , Ġthrowable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Trace Enabled (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġis Log gable ( Log . VERBOSE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtrace ( msg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠlogMessage ( Log . VERBOSE , Ġmsg , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtrace ( format : ĠString , Ġarg : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Formatted ( Log . VERBOSE , Ġformat , Ġarg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtrace ( format : ĠString , Ġarg 1 : ĠAny , Ġarg 2 : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Formatted ( Log . VERBOSE , Ġformat , Ġarg 1 , Ġarg 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtrace ( format : ĠString , Ġvar arg Ġarguments : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Formatted ( Log . VERBOSE , Ġformat , Ġ* arguments ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtrace ( msg : ĠString , Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ ĠlogMessage ( Log . VERBOSE , Ġmsg , Ġt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Debug Enabled (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġis Log gable ( Log . DEBUG ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdebug ( msg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠlogMessage ( Log . DEBUG , Ġmsg , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdebug ( format : ĠString , Ġarg : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Formatted ( Log . DEBUG , Ġformat , Ġarg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdebug ( format : ĠString , Ġarg 1 : ĠAny , Ġarg 2 : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Formatted ( Log . DEBUG , Ġformat , Ġarg 1 , Ġarg 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdebug ( format : ĠString , Ġvar arg Ġarguments : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Formatted ( Log . DEBUG , Ġformat , Ġ* arguments ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdebug ( msg : ĠString , Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ ĠlogMessage ( Log . DEBUG , Ġmsg , Ġt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Info Enabled (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġis Log gable ( Log . INFO ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinfo ( msg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠlogMessage ( Log . INFO , Ġmsg , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinfo ( format : ĠString , Ġarg : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Formatted ( Log . INFO , Ġformat , Ġarg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinfo ( format : ĠString , Ġarg 1 : ĠAny , Ġarg 2 : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Formatted ( Log . INFO , Ġformat , Ġarg 1 , Ġarg 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinfo ( format : ĠString , Ġvar arg Ġarguments : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Formatted ( Log . INFO , Ġformat , Ġ* arguments ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinfo ( msg : ĠString , Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ ĠlogMessage ( Log . INFO , Ġmsg , Ġt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Warn Enabled (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġis Log gable ( Log . WARN ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwarn ( msg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠlogMessage ( Log . WARN , Ġmsg , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwarn ( format : ĠString , Ġarg : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Formatted ( Log . WARN , Ġformat , Ġarg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwarn ( format : ĠString , Ġarg 1 : ĠAny , Ġarg 2 : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Formatted ( Log . WARN , Ġformat , Ġarg 1 , Ġarg 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwarn ( format : ĠString , Ġvar arg Ġarguments : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Formatted ( Log . WARN , Ġformat , Ġ* arguments ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwarn ( msg : ĠString , Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ ĠlogMessage ( Log . WARN , Ġmsg , Ġt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Error Enabled (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġis Log gable ( Log . ERROR ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġerror ( msg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠlogMessage ( Log . ERROR , Ġmsg , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġerror ( format : ĠString , Ġarg : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Formatted ( Log . ERROR , Ġformat , Ġarg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġerror ( format : ĠString , Ġarg 1 : ĠAny , Ġarg 2 : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Formatted ( Log . ERROR , Ġformat , Ġarg 1 , Ġarg 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġerror ( format : ĠString , Ġvar arg Ġarguments : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Formatted ( Log . ERROR , Ġformat , Ġ* arguments ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġerror ( msg : ĠString , Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ ĠlogMessage ( Log . ERROR , Ġmsg , Ġt ) ĊĠĠĠ Ġ} Ċ Ċ }