/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 ĠEric ĠA . ĠSn ell Ċ Ġ* Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof Ġe Al va Log . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . e al va . e al val og Ċ Ċ /** Ċ Ġ* ĠIt 's Ġexpected Ġall Ġlogging Ġoccurs Ġthrough Ġconcrete Ġimplementations Ġof Ġthis Ġinterface Ġwhich Ġare Ċ Ġ* Ġobtained Ġvia Ġlogger Ġfactories Ġand Ġsing letons Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠEric ĠA . ĠSn ell Ġon Ġ 2 / 2 8 / 1 7 . Ċ Ġ*/ Ċ interface ĠLogger Ġ{ ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠThe Ġname Ġof Ġthe Ġlogger . ĠIf Ġthe Ġunderlying Ġlogger Ġis Ġanonymous Ġ( name Ġis Ġnull ), Ġthen ĊĠĠ Ġ* Ġ[ AN ONY MO US _ NAME ] Ġis Ġreturned ĊĠĠ Ġ*/ ĊĠ Ġval Ġname : ĠString ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠThe Ġ[ Marker ] Ġto Ġuse Ġfor Ġall Ġlogging Ġfrom Ġthis Ġlogger , Ġsuper se ded Ġby Ġany Ġmarker Ġpassed Ġduring ĊĠĠ Ġ* Ġa Ġlogging Ġcall . ĊĠĠ Ġ*/ ĊĠ Ġvar Ġmarker : ĠMarker ? ĊĊĠ Ġvar Ġfilter : ĠLogger Filter ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠAn Ġoptional ĠLogLevel . ĠIf Ġnull Ġand Ġthe ĠLogger Ġimplementation Ġis ĊĠĠ Ġ* Ġh ierarchical , Ġthe Ġnearest Ġancestor ĠLogLevel Ġwill Ġbe Ġused Ġas Ġthe Ġlevel Ġfor Ġthis Ġlogger ĊĠĠ Ġ* ĊĠĠ Ġ* ĠIf Ġnull Ġis Ġpassed Ġto Ġthe Ġroot Ġlogger , Ġit Ġsets Ġthe Ġlevel Ġto Ġ[ LogLevel . NONE ] ĊĠĠ Ġ*/ ĊĠ Ġvar Ġlog Level : ĠLogLevel ? ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠThe Ġlevel Ġset Ġfor Ġthis Ġlogger Ġor , Ġif Ġthat Ġit Ġhas Ġnot Ġbeen Ġset , Ġget Ġthe Ġnearest Ġancestor ĊĠĠ Ġ* Ġlog Ġlevel Ġif Ġthe ĠLog gers Ġare Ġh ierarchical ĊĠĠ Ġ*/ ĊĠ Ġval Ġeffective LogLevel : ĠLogLevel ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSet Ġif Ġthis Ġlogger Ġshould Ġinclude Ġcall Ġsite Ġlocation Ġinformation Ġin Ġthe Ġlog Ġinformation . ĠThis ĊĠĠ Ġ* Ġis Ġa Ġrelatively Ġexpensive Ġoperation Ġand Ġdefaults Ġto Ġfalse . ĠEven Ġif Ġthis Ġis Ġfalse Ġa Ġlower Ġlevel ĊĠĠ Ġ* Ġhandler Ġmay Ġrequest Ġlocation Ġbe Ġincluded . ĠSee Ġ[ should Include Location ] ĊĠĠ Ġ* ĊĠĠ Ġ* ĠThe Ġinformation Ġpassed Ġto Ġlower Ġlayers Ġof Ġthe Ġlogging Ġframework Ġinclude : Ġcaller Ġclass , ĊĠĠ Ġ* Ġcaller Ġmethod , Ġand Ġcaller Ġfile Ġline Ġnumber . ĠThis Ġis Ġobtained Ġfrom Ġthe Ġcall Ġstack . ĠIf Ġcalling ĊĠĠ Ġ* Ġcode Ġis Ġob fuscated Ġthe Ġresults Ġwill Ġalso Ġbe Ġob fuscated . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠAlso Ġnote Ġthat Ġthe Ġunderlying Ġlog Ġstatement Ġformatter Ġmust Ġbe Ġconfigured Ġto Ġinclude Ġthis ĊĠĠ Ġ* Ġinformation . ĊĠĠ Ġ*/ ĊĠ Ġvar Ġinclude Location : ĠBoolean ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠDetermine Ġif Ġa Ġlog Ġcall Ġwill Ġinclude Ġlocation Ġinformation . ĠIf Ġ[ include Location ] Ġis Ġtrue Ġor Ġa ĊĠĠ Ġ* Ġlower Ġlevel Ġhandler Ġrequests Ġlocation Ġinformation , Ġit Ġis Ġobtained Ġfrom Ġthe Ġstack . ĠOb t aining ĊĠĠ Ġ* Ġthe Ġlocation Ġis Ġa Ġrelatively Ġexpensive Ġoperation . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġshould Include Location ( logLevel : ĠLogLevel , Ġmarker : ĠMarker ?, Ġthrowable : ĠThrowable ?): ĠBoolean ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠDetermine Ġif Ġa Ġlog Ġat Ġthis Ġ[ LogLevel ], Ġwith Ġthe Ġgiven Ġ( optional ) Ġ[ Marker ] Ġand Ġ( optional ) ĊĠĠ Ġ* Ġ[ Throwable ], Ġresult Ġin Ġan Ġactual Ġlog Ġstatement ĊĠĠ Ġ*/ ĊĠ Ġfun Ġis Log gable ( ĊĠĠĠ Ġlevel : ĠLogLevel , ĊĠĠĠ Ġmarker : ĠMarker ? Ġ= Ġnull , ĊĠĠĠ Ġthrowable : ĠThrowable ? Ġ= Ġnull ĊĠ Ġ): ĠBoolean ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠObtain Ġa Ġ[ LogEntry ] Ġfor Ġuse Ġwith Ġthis Ġlogger . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget LogEntry ( ĊĠĠĠ Ġlog Level : ĠLogLevel , ĊĠĠĠ Ġmarker : ĠMarker ?, ĊĠĠĠ Ġthrowable : ĠThrowable ?, ĊĠĠĠ Ġm dc Context : ĠM dc Context ? ĊĠ Ġ): ĠLog Entry ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠLog Ġwithout Ġchecking Ġthe Ġthe Ġlevel . ĠThis Ġmethod 's Ġprimary Ġuse Ġis Ġfor Ġthis Ġlogging Ġframework ĊĠĠ Ġ* Ġand Ġit 's Ġnot Ġexpected Ġclient 's Ġwould Ġtypically Ġuse Ġthis Ġmethod . ĠThe ĠKotlin Ġextension Ġfunctions ĊĠĠ Ġ* Ġand Ġthe ĠJ Logger Ġsubclass Ġuse Ġthis Ġfunction Ġinternally . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠThe Ġ[ entry ] Ġis Ġbecomes Ġ" owned " Ġby Ġthe ĠLogger . ĠDo Ġnot Ġmodify Ġor Ġreuse Ġthe Ġ[ entry ] Ġafter Ġinvoking ĊĠĠ Ġ* Ġthis Ġfunction . ĠThis Ġfunction Ġwill Ġclose Ġthe Ġentry Ġbefore Ġreturning . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġentry Ġthe Ġfull Ġlog Ġinformation ĊĠĠ Ġ*/ ĊĠ Ġfun Ġlog Immediate ( entry : ĠLog Entry ) ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġconst Ġval ĠAN ONY MO US _ NAME Ġ= Ġ" Anonymous ĠLogger " ĊĠ Ġ} Ċ } Ċ