@ file : Jvm Name (" Log ") Ċ Ċ package Ġme . daemon . tool . log Ċ Ċ /** Ċ Ġ* Ġ@ author Ġdaemon Ċ Ġ* Ġ@ since Ġ 2 0 1 9 - 0 6 - 2 8 Ġ 1 1 : 4 0 Ċ Ġ*/ Ċ Ċ type alias ĠTag Generator Ġ= Ġ( Any ) Ġ-> ĠString Ċ Ċ var Ġopen Log Ġ= Ġtrue Ċ Ċ private Ġvar Ġl : ĠILogger ? Ġ= Ġnull Ċ Ċ val Ġdefault Logger : ĠDefault Logger Ġby Ġlazy Ġ{ ĠDefault Logger () Ġ} Ċ Ċ var Ġlogger : ĠILogger ĊĠĠĠ Ġget () Ġ= Ġl Ġ?: Ġdefault Logger ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġl Ġ= Ġvalue ĊĠĠĠ Ġ} Ċ Ċ var Ġlog Level Ġ= ĠLevel . WARN Ċ Ċ var Ġlog Tag Prefix : ĠString Ġ= Ġ"" Ċ Ċ val Ġdefault Tag Generator : ĠTag Generator Ġ= Ġ{ Ġtag Ġ-> Ġ"$ log Tag Prefix $ tag " Ġ} Ċ Ċ val Ġstack Trace Tag Generator : ĠTag Generator Ġ= Ġ{ Ġ_ Ġ-> ĊĠĠĠ Ġval Ġstack Trace Element : ĠStack Trace Element Ġ= ĠThread . currentThread (). stack Trace [ 5 ] ĊĊĠĠĠ Ġvar Ġcaller Clazz Name Ġ= Ġstack Trace Element . className ĊĠĠĠ Ġcaller Clazz Name Ġ= Ġcaller Clazz Name . substring ( caller Clazz Name . lastIndexOf (".") Ġ+ Ġ 1 ) ĊĊĠĠĠ Ġ"$ log Tag Prefix $ caller Clazz Name .${ stack Trace Element . methodName }( L :${ stack Trace Element . line Number })" Ċ } Ċ Ċ var Ġtag Generator : ĠTag Generator Ġ= Ġdefault Tag Generator Ċ Ċ val Ġdefault Filter Ġ= Ġobject Ġ: ĠFilter Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġfilter ( logger : ĠILogger , Ġlevel : ĠLevel , Ġtag : ĠAny , Ġthrowable : ĠThrowable ?, Ġvar arg Ġmsg : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlog Level Ġ<= Ġlevel ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ var Ġfilter : ĠFilter Ġ= Ġdefault Filter Ċ Ċ fun Ġv ( tag : ĠAny , Ġvar arg Ġmsg : ĠAny ?) Ġ{ ĊĠĠĠ Ġval Ġl Ġ= Ġlogger ĊĠĠĠ Ġif Ġ(! open Log Ġ|| Ġ! filter . filter ( l , ĠLevel . VERBOSE , Ġtag , Ġnull , Ġmsg )) Ġreturn ĊĊĠĠĠ Ġl . v ( tag Generator ( tag ), Ġ* msg ) Ċ } Ċ Ċ fun Ġv ( tag : ĠAny , Ġthrowable : ĠThrowable , Ġvar arg Ġmsg : ĠAny ?) Ġ{ ĊĠĠĠ Ġval Ġl Ġ= Ġlogger ĊĠĠĠ Ġif Ġ(! open Log Ġ|| Ġ! filter . filter ( l , ĠLevel . VERBOSE , Ġtag , Ġthrowable , Ġmsg )) Ġreturn ĊĊĠĠĠ Ġl . v ( tag Generator ( tag ), Ġthrowable , Ġ* msg ) Ċ } Ċ Ċ fun Ġd ( tag : ĠAny , Ġvar arg Ġmsg : ĠAny ?) Ġ{ ĊĠĠĠ Ġval Ġl Ġ= Ġlogger ĊĠĠĠ Ġif Ġ(! open Log Ġ|| Ġ! filter . filter ( l , ĠLevel . DEBUG , Ġtag , Ġnull , Ġmsg )) Ġreturn ĊĊĠĠĠ Ġl . d ( tag Generator ( tag ), Ġ* msg ) Ċ } Ċ Ċ fun Ġd ( tag : ĠAny , Ġthrowable : ĠThrowable , Ġvar arg Ġmsg : ĠAny ?) Ġ{ ĊĠĠĠ Ġval Ġl Ġ= Ġlogger ĊĠĠĠ Ġif Ġ(! open Log Ġ|| Ġ! filter . filter ( l , ĠLevel . DEBUG , Ġtag , Ġthrowable , Ġmsg )) Ġreturn ĊĊĠĠĠ Ġl . d ( tag Generator ( tag ), Ġthrowable , Ġ* msg ) Ċ } Ċ Ċ fun Ġi ( tag : ĠAny , Ġvar arg Ġmsg : ĠAny ?) Ġ{ ĊĠĠĠ Ġval Ġl Ġ= Ġlogger ĊĠĠĠ Ġif Ġ(! open Log Ġ|| Ġ! filter . filter ( l , ĠLevel . INFO , Ġtag , Ġnull , Ġmsg )) Ġreturn ĊĊĠĠĠ Ġl . i ( tag Generator ( tag ), Ġ* msg ) Ċ } Ċ Ċ fun Ġi ( tag : ĠAny , Ġthrowable : ĠThrowable , Ġvar arg Ġmsg : ĠAny ?) Ġ{ ĊĠĠĠ Ġval Ġl Ġ= Ġlogger ĊĠĠĠ Ġif Ġ(! open Log Ġ|| Ġ! filter . filter ( l , ĠLevel . INFO , Ġtag , Ġthrowable , Ġmsg )) Ġreturn ĊĊĠĠĠ Ġl . i ( tag Generator ( tag ), Ġthrowable , Ġ* msg ) Ċ } Ċ Ċ fun Ġw ( tag : ĠAny , Ġvar arg Ġmsg : ĠAny ?) Ġ{ ĊĠĠĠ Ġval Ġl Ġ= Ġlogger ĊĠĠĠ Ġif Ġ(! open Log Ġ|| Ġ! filter . filter ( l , ĠLevel . WARN , Ġtag , Ġnull , Ġmsg )) Ġreturn ĊĊĠĠĠ Ġl . w ( tag Generator ( tag ), Ġ* msg ) Ċ } Ċ Ċ fun Ġw ( tag : ĠAny , Ġthrowable : ĠThrowable , Ġvar arg Ġmsg : ĠAny ?) Ġ{ ĊĠĠĠ Ġval Ġl Ġ= Ġlogger ĊĠĠĠ Ġif Ġ(! open Log Ġ|| Ġ! filter . filter ( l , ĠLevel . WARN , Ġtag , Ġthrowable , Ġmsg )) Ġreturn ĊĊĠĠĠ Ġl . w ( tag Generator ( tag ), Ġthrowable , Ġ* msg ) Ċ } Ċ Ċ fun Ġe ( tag : ĠAny , Ġvar arg Ġmsg : ĠAny ?) Ġ{ ĊĠĠĠ Ġval Ġl Ġ= Ġlogger ĊĠĠĠ Ġif Ġ(! open Log Ġ|| Ġ! filter . filter ( l , ĠLevel . ERROR , Ġtag , Ġnull , Ġmsg )) Ġreturn ĊĊĠĠĠ Ġl . e ( tag Generator ( tag ), Ġ* msg ) Ċ } Ċ Ċ fun Ġe ( tag : ĠAny , Ġthrowable : ĠThrowable , Ġvar arg Ġmsg : ĠAny ?) Ġ{ ĊĠĠĠ Ġval Ġl Ġ= Ġlogger ĊĠĠĠ Ġif Ġ(! open Log Ġ|| Ġ! filter . filter ( l , ĠLevel . ERROR , Ġtag , Ġthrowable , Ġmsg )) Ġreturn ĊĊĠĠĠ Ġl . e ( tag Generator ( tag ), Ġthrowable , Ġ* msg ) Ċ }