package Ġlogging Ċ Ċ class ĠLogger ( var arg Ġappend ers : ĠApp ender ) Ġ: ĠApp ender Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġof ( source : ĠString ): ĠLogger Ġ= ĠLogger (* Logging . append ers . to Typed Array ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextra [" source "] Ġ= Ġsource ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġof ( var arg Ġdata : ĠPair < String , ĠAny ?> ) Ġ= ĠLogger (* Logging . append ers . to Typed Array ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextra . put All ( data . toMap ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġappend ers Ġ= Ġappend ers . toList () ĊĊĠĠĠ Ġinternal Ġval Ġextra Ġ= Ġmutable Map Of < String , ĠAny ?> () ĊĊĠĠĠ Ġprivate Ġinline Ġfun ĠMap < String , ĠAny ?> . toArray () Ġ= Ġmap Ġ{ Ġ( k , Ġv ) Ġ-> Ġk Ġto Ġv Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend ( level : ĠLogLevel , Ġmsg : ĠString , Ġvar arg Ġdata : ĠPair < String , ĠAny ?> ) Ġ{ ĊĠĠĠĠĠĠĠ Ġappend ers . forEach Ġ{ Ġit . append ( level , Ġmsg , Ġ*( extra . toArray () Ġ+ Ġdata . toList ()). to Typed Array ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend ( var arg Ġo : ĠAny ?) Ġ= Ġappend ers . forEach Ġ{ Ġit . append ( o ) Ġ} Ċ }