package Ġb rig it te . core . di . module Ċ Ċ import Ġandroid . util . Log Ċ import Ġdagger . Module Ċ import Ġdagger . h ilt . Install In Ċ import Ġdagger . h ilt . android . components . Application Component Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ // Ġhttps :// github . com / J ake Wh art on / tim ber / blob / master / tim ber - sample / src / main / java / com / example / tim ber / Example App . java Ċ Ċ @ Singleton Ċ class ĠTim ber Config Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġuser Debug Tree : Ġdagger . Lazy < User Debug Tree >, ĊĠĠĠ Ġprivate Ġval Ġcrash Reporting Tree Ġ: Ġdagger . Lazy < Crash Reporting Tree > Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġsetting ( isDebug : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . plant ( if Ġ( isDebug ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Debug Tree . get () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcrash Reporting Tree . get () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Singleton Ċ class ĠUser Debug Tree Ġ@ Inject Ġconstructor () Ġ: ĠTim ber . Debug Tree () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcreate Stack Element Tag ( element : ĠStack Trace Element ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġelement . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ BK ] Ġ${ fileName . replace (". kt |. java ". to Regex (), Ġ"") }. $ methodName ($ fileName :$ line Number )" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Singleton Ċ class ĠCrash Reporting Tree Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġcrash Report : ĠCrash Report Ċ ) Ġ: ĠTim ber . Tree () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġlog ( priority : ĠInt , Ġtag : ĠString ?, Ġmessage : ĠString , Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( priority Ġ== ĠLog . VERBOSE Ġ|| Ġpriority Ġ== ĠLog . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġt ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( priority ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . ERROR Ġ-> Ġcrash Report . report ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }