package Ġcn . th ens . log dog Ċ Ċ import Ġandroid . util . Log .* Ċ import Ġjava . io . OutputStream Ċ import Ġjava . io . Print Stream Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ@ author Ġ 7 h ens Ċ Ġ*/ Ċ fun Ġinterface ĠLogger Ġ{ ĊĠĠĠ Ġfun Ġlog ( priority : ĠLog Priority , Ġtag : ĠString , Ġmessage : ĠAny ?) ĊĊĠĠĠ Ġfun Ġpretty (): ĠPretty Logger Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġself Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠPretty Logger Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġlogger : ĠLogger Ġ= Ġself ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject ĠX Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMARK Ġ= Ġ"=" ĊĊĠĠĠĠĠĠĠ Ġfun Ġempty (): ĠLogger Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEmpty ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġlog cat (): ĠLogger Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLog cat ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġout ( output : ĠOutputStream ): ĠLogger Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPrint ( output Ġas ? ĠPrint Stream Ġ?: ĠPrint Stream ( output )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠOUT Ġby Ġlazy Ġ{ Ġout ( System . out ) Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠERR Ġby Ġlazy Ġ{ Ġout ( System . err ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġout (): ĠLogger Ġ= ĠOUT ĊĊĠĠĠĠĠĠĠ Ġfun Ġerr (): ĠLogger Ġ= ĠERR ĊĊĠĠĠĠĠĠĠ Ġfun Ġsys (): ĠLogger Ġ= ĠSys ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠPrint ( private Ġval Ġprinter : ĠPrint Stream ) Ġ: ĠLogger Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠdateFormat : ĠSimpleDateFormat Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSimpleDateFormat ( DATE _ PATTERN , ĠLocale . getDefault ()) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlog ( priority : ĠLog Priority , Ġtag : ĠString , Ġmessage : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Ġ= ĠdateFormat . format ( Date ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprinter . println ("$ time Ġ${ priority . name . first () }/ $ MARK $ tag : Ġ$ message ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDATE _ PATTERN Ġ= Ġ" yyyy . MM . dd ĠHH : mm : ss . SS S " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġobject ĠSys Ġ: ĠLogger Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlog ( priority : ĠLog Priority , Ġtag : ĠString , Ġmessage : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogger Ġ= Ġif Ġ( priority Ġ>= ĠLog Priority . ERROR ) ĠERR Ġelse ĠOUT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . log ( priority , Ġtag , Ġmessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġobject ĠLog cat Ġ: ĠLogger Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġprior ities Ġ= ĠarrayOf ( VERBOSE , ĠDEBUG , ĠINFO , ĠWARN , ĠERROR , ĠASSERT ) ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġtag Flag Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlog ( priority : ĠLog Priority , Ġtag : ĠString , Ġmessage : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag Flag Ġ= Ġ! tag Flag ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Prefix Ġ= Ġif Ġ( tag Flag ) Ġ":" Ġelse Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( getLog Priority ( priority ), Ġ"$ MARK $ tag Prefix $ tag ", Ġ"" Ġ+ Ġmessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Log Priority ( priority : ĠLog Priority ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġpriority . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( index Ġin Ġprior ities . indices ) Ġprior ities [ index ] Ġelse ĠASSERT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġobject ĠEmpty Ġ: ĠLogger Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlog ( priority : ĠLog Priority , Ġtag : ĠString , Ġmessage : ĠAny ?) Ġ{} ĊĠĠĠ Ġ} Ċ }