package Ġeu . bolt . k ale v Ċ Ċ import Ġeu . bolt . k ale v . fast . Fast Log Ċ Ċ @ Suppress (" Member Visibility Can Be Private ", Ġ" unused ") Ċ object ĠK ale v Ġ{ ĊĊĠĠĠ Ġconst Ġval ĠV Ġ= Ġ" v " ĊĠĠĠ Ġconst Ġval ĠD Ġ= Ġ" d " ĊĠĠĠ Ġconst Ġval ĠI Ġ= Ġ" i " ĊĠĠĠ Ġconst Ġval ĠW Ġ= Ġ" w " ĊĠĠĠ Ġconst Ġval ĠE Ġ= Ġ" e " ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNo ĠOperation Ġmode . ĊĠĠĠĠ Ġ* ĠIn Ġcase Ġof Ġenabled ĠN OP Ġmode ĠK ale v Ġwill Ġnot Ġcreate Ġlog Ġentries Ġand Ġdispatch Ġthem Ġto Ġconsumers ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġnop Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġval Ġnop Entry Ġ= ĠN op LogEntry ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFast Log Ġcan Ġbe Ġused Ġfor Ġperformance - sensitive Ġlogging . ĠNote Ġthat ĠFast Log Ġwill ĠNOT Ġtrigger Ġlog Ġconsumers ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġfast Log : ĠFast Log ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġconsumers Ġ= Ġmutable ListOf < K ale v ipo eg >() ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġd ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Entry (). log ( message , ĠD ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġd ( throwable : ĠThrowable , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( throwable ). log ( message , ĠD ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġe ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Entry (). log ( message , ĠE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġe ( throwable : ĠThrowable , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( throwable ). log ( message , ĠE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġi ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Entry (). log ( message , ĠI ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġi ( throwable : ĠThrowable , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( throwable ). log ( message , ĠI ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġv ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Entry (). log ( message , ĠV ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġv ( throwable : ĠThrowable , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( throwable ). log ( message , ĠV ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġw ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Entry (). log ( message , ĠW ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġw ( throwable : ĠThrowable , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( throwable ). log ( message , ĠW ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġwith ( key : ĠString , Ġvalue : ĠAny ?): ĠLog Entry Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Entry (). with ( key , Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġtag ( tag : ĠString ): ĠLog Entry Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Entry (). tag ( tag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġwith ( error : ĠThrowable ): ĠLog Entry Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Entry (). with ( error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġadd Po eg ( consumer : ĠK ale v ipo eg ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconsumers . add ( consumer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġremove Po eg ( consumer : ĠK ale v ipo eg ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconsumers . remove ( consumer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġremove All Po eg s () Ġ{ ĊĠĠĠĠĠĠĠ Ġconsumers . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Entry (): ĠLog Entry Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( nop ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnop Entry ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Entry () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġlog ( entry : ĠLog Entry ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconsumers . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . log ( entry ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ