// ĠCopyright Ġ( c ) Ġ 2 0 2 0 - 2 0 2 1 ĠDrag on K night Of B reeze ĠWin dea Ċ // ĠB reeze Ġis Ġblow ing ... Ċ Ċ @ file : Suppress (" D uplicated Code ") Ċ Ċ package Ġic u . win dea . b reeze framework . logger . impl Ċ Ċ import Ġic u . win dea . b reeze framework . logger .* Ċ import Ġjava . io .* Ċ import Ġjava . text .* Ċ import Ġjava . util .* Ċ Ċ /** ç®ĢåįķçļĦ æĹ¥å¿Ĺ åĻ¨ ãĢĤ */ Ċ class ĠSimple Logger ( Ċ ĉ override Ġval Ġconfig : ĠLogger Config Ġ= ĠLogger Config (), Ċ ) Ġ: ĠLogger Ġ{ Ċ ĉ constructor ( block : ĠLogger Config . () Ġ-> ĠUnit ) Ġ: Ġthis ( Logger Config (). apply ( block )) ĊĊĊ ĉ override Ġfun Ġtrace ( message : ĠAny ?) Ġ= Ġlog ( LogLevel . Trace , Ġmessage ) ĊĊ ĉ override Ġfun Ġtrace ( lazy Message : Ġ() Ġ-> ĠAny ?) Ġ= Ġlog ( LogLevel . Trace , Ġlazy Message ()) ĊĊ ĉ override Ġfun Ġdebug ( message : ĠAny ?) Ġ= Ġlog ( LogLevel . Debug , Ġmessage ) ĊĊ ĉ override Ġfun Ġdebug ( lazy Message : Ġ() Ġ-> ĠAny ?) Ġ= Ġlog ( LogLevel . Debug , Ġlazy Message ()) ĊĊ ĉ override Ġfun Ġinfo ( message : ĠAny ?) Ġ= Ġlog ( LogLevel . Info , Ġmessage ) ĊĊ ĉ override Ġfun Ġinfo ( lazy Message : Ġ() Ġ-> ĠAny ?) Ġ= Ġlog ( LogLevel . Info , Ġlazy Message ()) ĊĊ ĉ override Ġfun Ġwarn ( message : ĠAny ?) Ġ= Ġlog ( LogLevel . Warn , Ġmessage ) ĊĊ ĉ override Ġfun Ġwarn ( lazy Message : Ġ() Ġ-> ĠAny ?) Ġ= Ġlog ( LogLevel . Warn , Ġlazy Message ) ĊĊ ĉ override Ġfun Ġerror ( message : ĠAny ?) Ġ= Ġlog ( LogLevel . Error , Ġmessage ) ĊĊ ĉ override Ġfun Ġerror ( lazy Message : Ġ() Ġ-> ĠAny ?) Ġ= Ġlog ( LogLevel . Error , Ġlazy Message ()) ĊĊ ĉ override Ġfun Ġfatal ( message : ĠAny ?) Ġ= Ġlog ( LogLevel . Fatal , Ġmessage ) ĊĊ ĉ override Ġfun Ġfatal ( lazy Message : Ġ() Ġ-> ĠAny ?) Ġ= Ġlog ( LogLevel . Fatal , Ġlazy Message ()) ĊĊ ĉ private Ġfun Ġlog ( level : ĠLogLevel , Ġmessage : ĠAny ?) Ġ{ Ċĉ ĉ if ( config . min LogLevel Ġ> Ġlevel ) Ġreturn ĊĊĉ ĉ val Ġlevel Snippet Ġ= Ġif ( config . is Level Included ) Ġlevel . text Ġelse Ġnull Ċĉ ĉ val Ġdate Snippet Ġ= Ġif ( config . is Date Included ) Ġcurrent Date . let Ġ{ Ġ" [$ it ]" Ġ} Ġelse Ġnull Ċĉ ĉ val Ġpath Snippet Ġ= Ġwhen Ġ{ Ċĉĉ ĉ config . is Path Included Ġ&& Ġ! config . is Path Abbre vi ated Ġ-> Ġcurrent ClassName Ċĉĉ ĉ config . is Path Abbre vi ated Ġ-> Ġcurrent ClassName Abbre viation Ċĉĉ ĉ else Ġ-> Ġnull Ċĉ ĉ } Ċĉ ĉ val Ġmarkers Snippet Ġ= ĠarrayOf ( date Snippet , Ġlevel Snippet , Ġpath Snippet ). filter NotNull () Ċĉĉ ĉ . join ToString (" Ġ", Ġ"", Ġconfig . delimiter ) Ċĉ ĉ val Ġmessage Snippet Ġ= Ġmessage . toString () Ċĉ ĉ val Ġlog Snippet Ġ= Ġ"$ markers Snippet $ message Snippet \ n " ĊĊĉ ĉ config . output Path ?. let Ġ{ ĠFile ( it ). append Text ( log Snippet ) Ġ} ĊĊĉ ĉ System . err . print ( log Snippet ) Ċ ĉ } ĊĊ ĉ private Ġval Ġcurrent Date Ġget () Ġ= ĠSimpleDateFormat ( config . date Format ). format ( Date ()) ĊĊ ĉ private Ġval Ġcurrent ClassName Ġget () Ġ= ĠException (). stack Trace [ 3 ]. className ĊĊ ĉ private Ġval Ġcurrent ClassName Abbre viation Ċĉ ĉ get () Ġ= Ġcurrent ClassName . split (". "). join ToString (".") Ġ{ Ġit . substring ( 0 , Ġ 1 ) Ġ} Ġ+ Ċĉĉ ĉ current ClassName . substring ( current ClassName . lastIndexOf ('.') Ġ+ Ġ 2 , Ġcurrent ClassName . length ) Ċ } Ċ