package Ġcom . r abb ith ouse . svr Ċ Ċ import Ġandroid . util . Log Ċ Ċ /** Ċ Ġ* ĠLog Ġboth Ġto ĠAndroid Ġlogger Ġ( so Ġthat Ġlogs Ġare Ġvisible Ġin Ġ" adb Ġlog cat ") Ġand Ġstandard Ġoutput / error Ġ( so Ġthat Ġthey Ġare Ġvisible Ġin Ġthe Ġterminal Ċ Ġ* Ġdirectly ). Ċ Ġ*/ Ċ object ĠL n Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" ph is ap " ĊĠĠĠ Ġprivate Ġconst Ġval ĠPREFIX Ġ= Ġ"[ server ] Ġ" ĊĠĠĠ Ġprivate Ġvar Ġthreshold Ġ= ĠLevel . INFO ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitialize Ġthe Ġlog Ġlevel . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠMust Ġbe Ġcalled Ġbefore Ġstarting Ġany Ġnew Ġthread . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlevel Ġthe Ġlog Ġlevel ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinit LogLevel ( level : ĠLevel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthreshold Ġ= Ġlevel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Enabled ( level : ĠLevel ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlevel . ordinal Ġ>= Ġthreshold . ordinal ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġd ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isEnabled ( Level . DEBUG )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( PREFIX Ġ+ Ġ" DEBUG : Ġ" Ġ+ Ġmessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġi ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isEnabled ( Level . INFO )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( PREFIX Ġ+ Ġ" INFO : Ġ" Ġ+ Ġmessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġw ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isEnabled ( Level . WARN )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( PREFIX Ġ+ Ġ" WARN : Ġ" Ġ+ Ġmessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ kotlin . jvm . Jvm Static ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġe ( message : ĠString , Ġthrowable : ĠThrowable ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isEnabled ( Level . ERROR )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġmessage , Ġthrowable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( PREFIX Ġ+ Ġ" ERROR : Ġ" Ġ+ Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrowable ?. printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠLevel Ġ{ ĊĠĠĠĠĠĠĠ ĠDEBUG , ĠINFO , ĠWARN , ĠERROR ĊĠĠĠ Ġ} Ċ }