package Ġcom . ult imate logger . multi platform . output Ċ Ċ import Ġcom . ult imate logger . multi platform . Ult imate Logger Ċ import Ġcom . ult imate logger . multi platform . di . Lazy Service Locator Ċ import Ġcom . ult imate logger . multi platform . util . run If Ċ Ċ open Ġclass ĠLogging If Is On Multi Priority Logger Ġ: ĠU lt imate Logger Ġ{ ĊĊĠĠĠ Ġinternal Ġvar Ġshould Log Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġval Ġlogger : ĠU lt imate Logger Ġby ĠLazy Service Locator . get Dependency () ĊĊĠĠĠ Ġoverride Ġfun Ġv ( msg : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . v ( msg , Ġwith Thread Name , Ġwith FileName And Line Num , Ġwith ClassName , Ġwith MethodName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġv ( throwable : ĠThrowable ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextra Message : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ Ġlogger . v ( throwable , Ġextra Message , Ġwith Thread Name ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< Any T > Ġv ( anything : ĠAny T ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . v ( anything , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġd ( msg : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . d ( msg , Ġwith Thread Name , Ġwith FileName And Line Num , Ġwith ClassName , Ġwith MethodName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġd ( throwable : ĠThrowable ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextra Message : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ Ġlogger . d ( throwable , Ġextra Message , Ġwith Thread Name ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< Any T > Ġd ( anything : ĠAny T ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . d ( anything , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġi ( msg : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . i ( msg , Ġwith Thread Name , Ġwith FileName And Line Num , Ġwith ClassName , Ġwith MethodName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġi ( throwable : ĠThrowable ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextra Message : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ Ġlogger . i ( throwable , Ġextra Message , Ġwith Thread Name ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< Any T > Ġi ( anything : ĠAny T ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . i ( anything , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġw ( msg : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . w ( msg , Ġwith Thread Name , Ġwith FileName And Line Num , Ġwith ClassName , Ġwith MethodName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġw ( throwable : ĠThrowable ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextra Message : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ Ġlogger . w ( throwable , Ġextra Message , Ġwith Thread Name ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< Any T > Ġw ( anything : ĠAny T ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . w ( anything , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġe ( msg : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . e ( msg , Ġwith Thread Name , Ġwith FileName And Line Num , Ġwith ClassName , Ġwith MethodName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġe ( throwable : ĠThrowable ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextra Message : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ Ġlogger . e ( throwable , Ġextra Message , Ġwith Thread Name ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< Any T > Ġe ( anything : ĠAny T ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . e ( anything , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġw tf ( msg : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . w tf ( msg , Ġwith Thread Name , Ġwith FileName And Line Num , Ġwith ClassName , Ġwith MethodName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġw tf ( throwable : ĠThrowable ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextra Message : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ Ġlogger . w tf ( throwable , Ġextra Message , Ġwith Thread Name ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< Any T > Ġw tf ( anything : ĠAny T ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . w tf ( anything , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< Any T > Ġtodo ( anything : ĠAny T ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName : ĠBoolean ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun If Is Logging On Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . todo ( anything , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Thread Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith FileName And Line Num , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ClassName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith MethodName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun If Is Logging On ( block : Ġ() Ġ-> ĠUnit ) Ġ= Ġrun If ( should Log ) Ġ{ Ġblock () Ġ} Ċ }