/* Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 1 9 ĠDen is ĠSh ury gin . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ċ Ġ*/ Ċ Ċ package Ġru . po cket byte . ky d ra . log Ċ Ċ class ĠThrow Exception Logger ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġexception Factory : ĠFactory Ċ ): ĠLogger Ġ{ ĊĊĠĠĠ Ġclass ĠException ( ĊĠĠĠĠĠĠĠ Ġval Ġlog Level : ĠLogLevel , ĊĠĠĠĠĠĠĠ Ġval Ġlog Tag : ĠString ?, ĊĠĠĠĠĠĠĠ Ġval ĠlogMessage : ĠString ?, ĊĠĠĠĠĠĠĠ Ġcause : ĠThrowable ? ĊĠĠĠ Ġ): ĠRuntimeException ( ĊĠĠĠĠĠĠĠ Ġ" level =${ logLevel . name }; Ġ" Ġ+ ĊĠĠĠĠĠĠĠ Ġ" tag =${ log Tag Ġ?: Ġ" null "} " Ġ+ ĊĠĠĠĠĠĠĠ Ġ( log Message ?. let Ġ{ Ġ"; Ġmessage =$ it " Ġ} Ġ?: Ġ""), ĊĠĠĠĠĠĠĠ Ġcause ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinterface ĠFactory Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġexception From Message ( level : ĠLogLevel , Ġtag : ĠString ?, Ġmessage : ĠString ): ĠThrowable ĊĠĠĠĠĠĠĠ Ġfun Ġexception From Exception ( level : ĠLogLevel , Ġtag : ĠString ?, Ġexception : ĠThrowable ): ĠThrowable ĊĠĠĠĠĠĠĠ Ġfun Ġexception From Function ( level : ĠLogLevel , Ġtag : ĠString ?, Ġfunction : Ġ() Ġ-> ĠString ): ĠThrowable ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor (): Ġthis ( Factory Impl ()) ĊĠĠĠ Ġconstructor ( exception Message : ĠString ): Ġthis ( RuntimeException ( exception Message )) ĊĠĠĠ Ġconstructor ( exception : ĠThrowable ): Ġthis ( Constant Exception Factory ( exception )) ĊĊĠĠĠ Ġoverride Ġfun Ġlog ( level : ĠLogLevel , Ġtag : ĠString ?, Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow Ġexception Factory . exception From Message ( level , Ġtag , Ġmessage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlog ( level : ĠLogLevel , Ġtag : ĠString ?, Ġexception : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow Ġexception Factory . exception From Exception ( level , Ġtag , Ġexception ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlog ( level : ĠLogLevel , Ġtag : ĠString ?, Ġfunction : Ġ() Ġ-> ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow Ġexception Factory . exception From Function ( level , Ġtag , Ġfunction ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġclass ĠFactory Impl : ĠFactory Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexception From Message ( level : ĠLogLevel , Ġtag : ĠString ?, Ġmessage : ĠString ): ĠThrowable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠException ( level , Ġtag , Ġmessage , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexception From Exception ( level : ĠLogLevel , Ġtag : ĠString ?, Ġexception : ĠThrowable ): ĠThrowable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠException ( level , Ġtag , Ġnull , Ġexception ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexception From Function ( level : ĠLogLevel , Ġtag : ĠString ?, Ġfunction : Ġ() Ġ-> ĠString ): ĠThrowable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġexception From Message ( level , Ġtag , Ġfunction ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠConstant Exception Factory ( ĊĠĠĠĠĠĠĠ Ġval Ġexception : ĠThrowable ĊĠĠĠ Ġ): ĠFactory Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexception From Message ( level : ĠLogLevel , Ġtag : ĠString ?, Ġmessage : ĠString ): ĠThrowable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . exception ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexception From Exception ( level : ĠLogLevel , Ġtag : ĠString ?, Ġexception : ĠThrowable ): ĠThrowable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . exception ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexception From Function ( level : ĠLogLevel , Ġtag : ĠString ?, Ġfunction : Ġ() Ġ-> ĠString ): ĠThrowable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . exception ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }