import Ġjava . util .* Ċ Ċ fun Ġconfig ( ĊĠĠĠĠĠĠĠ Ġstatus : ĠLogLevel Ġ= ĠLogLevel . INFO , ĊĠĠĠĠĠĠĠ Ġappend ers : ĠArray < Appender > Ġ= Ġempty Array (), ĊĠĠĠĠĠĠĠ Ġlog gers : ĠArray < Logger > Ġ= Ġempty Array () Ċ ) Ġ= ĠLog 4 J Config ( status , Ġappend ers , Ġlog gers ) Ċ Ċ enum Ġclass ĠLogLevel Ġ{ ĠTRACE , ĠDEBUG , ĠINFO , ĠWARN , ĠERROR , ĠFAT AL Ġ} Ċ Ċ enum Ġclass ĠConsole Output Ġ{ ĠOUT , ĠERR Ġ} Ċ Ċ interface ĠApp ender Ċ Ċ data Ġclass ĠConsole ( ĊĠĠĠĠĠĠĠ Ġval Ġname : ĠString Ġ= Ġ" Console ", ĊĠĠĠĠĠĠĠ Ġval Ġtarget : ĠConsole Output Ġ= ĠConsole Output . OUT , ĊĠĠĠĠĠĠĠ Ġval Ġlayout : ĠLayout Ċ ) Ġ: ĠApp ender Ċ Ċ interface ĠLayout Ċ Ċ data Ġclass ĠPattern Layout ( ĊĠĠĠĠĠĠĠ Ġval Ġpattern : ĠString Ċ ) Ġ: ĠLayout Ċ Ċ interface ĠLogger Ċ Ċ data Ġclass ĠRoot ( ĊĠĠĠĠĠĠĠ Ġval Ġlevel : ĠLogLevel Ġ= ĠLogLevel . INFO , ĊĠĠĠĠĠĠĠ Ġval Ġapp ender Ref : ĠString ? Ġ= Ġnull Ċ ) Ġ: ĠLogger Ċ Ċ data Ġclass ĠLog 4 J Config ( ĊĠĠĠĠĠĠĠ Ġval Ġstatus : ĠLogLevel , ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠArray < Appender >, ĊĠĠĠĠĠĠĠ Ġval Ġlog gers : ĠArray < Logger > Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( java Class Ġ!= Ġother ?. java Class ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġother Ġas ĠLog 4 J Config ĊĊĠĠĠĠĠĠĠ Ġif Ġ( status Ġ!= Ġother . status ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ(! Arrays . equals ( append ers , Ġother . append ers )) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ(! Arrays . equals ( log gers , Ġother . log gers )) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġstatus . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ ĠArrays . hashCode ( append ers ) ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ ĠArrays . hashCode ( log gers ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ }