Vytváranie vlastného doplnku Log4j2

1. Úvod

V tomto výučbe sa dozvieme o vytváraní vlastného pripájača Log4j2. Ak hľadáte úvod do produktu Log4j2, pozrite si tento článok.

Log4j2 sa dodáva s mnohými zabudovanými prílohami ktoré je možné použiť na rôzne účely, napríklad na prihlásenie do súboru, do databázy, do zásuvky alebo do databázy NoSQL.

V závislosti od požiadaviek aplikácie však môže byť potrebný vlastný doplnok.

Log4j2 je inovovaná verzia Log4j a oproti Log4j má výrazné vylepšenia. Preto použijeme rámec Log4j2 na demonštráciu vytvorenia vlastného doplnku.

2. Nastavenie Maven

Budeme potrebovať log4j-jadro závislosť v našom pom.xml začať:

 org.apache.logging.log4j log4j-core 2.11.0 

Najnovšia verzia log4j-jadro nájdete tu.

3. Vlastný dodatok

Existujú dva spôsoby, ako môžeme implementovať náš vlastný doplnok. Prvým je implementácia Dodatok a druhým je rozšírenie AbstractAppender trieda. Druhá metóda poskytuje jednoduchý spôsob implementácie nášho vlastného prispôsobeného doplnku, a to použijeme.

Pre tento príklad vytvoríme a MapAppender. Zachytíme udalosti denníka a uložíme ich do a SúbežneHashMap s časovou značkou pre kľúč.

Takto vytvoríme MapAppender:

@Plugin (name = "MapAppender", category = Core.CATEGORY_NAME, elementType = Appender.ELEMENT_TYPE) verejná trieda MapAppender rozširuje AbstractAppender {private ConcurrentMap eventMap = new ConcurrentHashMap (); chránený MapAppender (názov reťazca, filter filtra) {super (názov, filter, nulová hodnota); } @PluginFactory public static MapAppender createAppender (@PluginAttribute ("name") Názov reťazca, @PluginElement ("Filter") filter filtra) {vrátiť nový MapAppender (meno, filter); } @Override public void append (udalosť LogEvent) {eventMap.put (Instant.now (). ToString (), udalosť); }}

Triedu sme anotovali pomocou @Zapojiť anotácia, ktorá naznačuje, že náš pripájač je doplnok.

The názov doplnku znamená meno, ktoré by sme poskytli v konfigurácii na použitie tohto prídavného zariadenia. The kategórie určuje kategóriu, pod ktorú plugin umiestnime. The elementType je appender.

Potrebujeme tiež továrenskú metódu, ktorá vytvorí prílohu. Náš createAppender metóda slúži tomuto účelu a je anotovaná pomocou @PluginFactory anotácia.

Tu inicializujeme nášho appenderu zavolaním chráneného konštruktora a odovzdáme rozloženie tak prázdne, ako nebudeme poskytovať žiadne rozloženie v konfiguračnom súbore a očakávame, že rámec vyrieši predvolené rozloženie.

Ďalšie, prepísali sme pridať metóda, ktorá má skutočnú logiku spracovania LogEvent. V našom prípade pridať metóda kladie LogEvent do našej eventMap.

4. Konfigurácia

Teraz, keď máme svoje MapAppender na mieste potrebujeme a lo4j2.xml konfiguračný súbor, aby sme tohto prihlasovateľa mohli použiť na prihlásenie.

Tu je postup, ako definujeme konfiguračnú časť v našom log4j2.xml spis:

Atribút balíčky by mal odkazovať na balík, ktorý obsahuje vášho vlastného pripájača.

Ďalej v našej časti prihlasovateľa definujeme prihlasovateľa. Takto pridáme nášho vlastného dodávateľa do zoznamu prídavných zariadení v konfigurácii:

Poslednou časťou je skutočné použitie appenderu v našej sekcii Loggery. Na našu implementáciu používame MapAppender ako root root a definujte ho v root časti.

Postupuje sa takto:

5. Spracovanie chýb

Na riešenie chýb pri prihlasovaní udalosti môžeme použiť chyba metóda zdedená z AbstractAppender.

Napríklad, ak nechceme zaznamenávať udalosti, ktoré majú úroveň protokolu nižšiu ako POZOR.

Môžeme použiť chyba metóda AbstractAppender prihlásiť chybovú správu. V našej triede sa postupuje takto:

public void append (udalosť LogEvent) {if (event.getLevel (). isLessSpecificThan (Level.WARN)) {chyba ("Nemožno prihlásiť menej ako WARN úroveň."); návrat; } eventMap.put (Instant.now (). toString (), udalosť); }

Pozorujte, ako je to s nami pridať metóda sa teraz zmenila. Skontrolujeme diania úroveň vyššia ako POZOR a vrátime sa skôr, ak je to niečo menej ako POZOR.

6. Záver

V tomto článku sme videli, ako implementovať vlastný doplnok pre Log4j2.

Aj keď existuje veľa zabudovaných spôsobov protokolovania našich údajov pomocou dodávaných doplnkov Log4j2, v tomto rámci máme aj nástroje, ktoré nám umožňujú vytvoriť si nášho vlastného dodávateľa podľa našich aplikačných potrieb.

Ako obvykle, príklad nájdete na Githube.


$config[zx-auto] not found$config[zx-overlay] not found