package Ġcom . yh . app inject . logger . impl čĊč Ċ import Ġandroid . os . Build č Ċ import Ġandroid . os . Handler č Ċ import Ġandroid . os . Looper č Ċ import Ġandroid . os . Message č Ċ import Ġcom . yh . app inject . logger . Log Strategy č Ċ import Ġjava . io . File č Ċ import Ġjava . io . FileWriter č Ċ import Ġkotlin . concurrent . thread čĊč Ċ class ĠDisk Log Strategy ( private Ġval Ġhandler : ĠWrite Handler ) Ġ: ĠLog Strategy Ġ{ čĊĠĠĠĠčĊĠĠĠ Ġcompanion Ġobject Ġ{ čĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMSG _ END Ġ= Ġ 0 x 9 9 9 čĊĠĠĠ Ġ} čĊĠĠĠĠčĊĠĠĠ Ġoverride Ġfun Ġlog ( priority : ĠInt , Ġtag : ĠString , Ġmessage : ĠString ) Ġ{ čĊĠĠĠĠĠĠĠ Ġif ( message . isNotEmpty ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . sendMessage ( handler . obtain Message ( priority , Ġmessage )) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊĠĠĠĠčĊĠĠĠ Ġoverride Ġfun Ġrelease () Ġ{ čĊĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . sendMessage ( handler . obtain Message ( MSG _ END )) čĊĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊĠĠĠĠčĊĠĠĠ Ġclass ĠWrite Handler ( čĊĠĠĠĠĠĠĠ Ġlo oper : ĠL ooper , čĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog File : ĠFile čĊĠĠĠ Ġ) Ġ: ĠHandler ( lo oper ) Ġ{ čĊĠĠĠĠĠĠĠĠčĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Message ( msg : ĠMessage ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( MSG _ END Ġ== Ġmsg . what ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthread Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . J EL LY _ BE AN _ MR 2 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlo oper . quit S af ely () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlo oper . quit () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġmsg . obj čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( content Ġ! is ĠString Ġ|| Ġcontent . isEmpty ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Writer ( log File , Ġtrue ). use Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . append ( content ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . flush () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊĠĠĠĠč Ċ }