package Ġio . sk erna . commons . logger Ċ Ċ import Ġjava . io . Serializable Ċ import Ġjava . util . concurrent . locks .* Ċ import Ġorg . apache . logging . log 4 j . core .* Ċ import Ġorg . apache . logging . log 4 j . core . appender . Abstract Appender Ċ import Ġorg . apache . logging . log 4 j . core . appender . Appender Logging Exception Ċ import Ġorg . apache . logging . log 4 j . core . config . plugins .* Ċ import Ġorg . apache . logging . log 4 j . core . layout . Message Layout Ċ import Ġorg . apache . logging . log 4 j . core . layout . Pattern Layout Ċ import Ġjava . util . ArrayList ĊĊ Ċ @ Plugin ( name Ġ= Ġ" Test Appender ", Ġcategory Ġ= Ġ" Core ", Ġelement Type Ġ= Ġ" ap ender ", Ġprint Object Ġ= Ġtrue ) Ċ class ĠTest Appender Ġ Ġconstructor ( name : ĠString , Ġfilter : ĠFilter ?, Ġlayout : ĠLayout < out ĠSerializable > ?) Ġ: ĠAbstract Appender ( name , Ġfilter , Ġlayout ) Ġ{ ĊĠĠĠ Ġvar Ġmessages : ĠMutable List < Log Event > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfield ĊĊĠĠĠ Ġoverride Ġfun Ġappend ( event : ĠLog Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmessages . add ( event ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetLast Message Formatted (): String { ĊĠĠĠĠĠĠĠ Ġif ( messages . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmessages . last (). message . formatted Message ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun ĠgetLast Message Format (): String { ĊĠĠĠĠĠĠĠ Ġif ( messages . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmessages . last (). message . format ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetLast Message (): ĠLog Event Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmessages . last () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠserialVersionUID Ġ= Ġ 8 0 4 7 7 1 3 1 3 5 1 0 0 6 1 3 1 8 5 L ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Plugin Factory ĊĠĠĠĠĠĠĠ Ġfun Ġcreate Appender (@ Plugin Attribute (" name ") Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Plugin Element (" Layout ") Ġlayout : ĠLayout < out ĠSerializable > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Plugin Element (" Filter ") Ġfilter : ĠFilter ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Plugin Attribute (" other Attribute ") Ġother Attribute : ĠString ?): ĠTest Appender ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlayout Ġ= Ġlayout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAbstract Life Cycle . LOGGER . error (" No Ġname Ġprovided Ġfor ĠTest Appender ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( layout Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Ġ= ĠPattern Layout . create Default Layout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTest Appender ( name , Ġfilter , Ġlayout ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ