Keď píšete počítačový kód v C # je vhodné zahrnúť logovací kód. Ak sa niečo pokazí, viete, kde začať hľadať. Svet Java to robí už roky. Na tento účel môžete použiť log4net. Je súčasťou Apache log4j 2, populárnej open-source logging framework.
Toto nie je jediný .NET logging framework; je ich veľa. Avšak, apache meno je dôveryhodné a pôvodný rámec protokolovania Java existuje už viac ako 15 rokov.
Prečo používať Log4net Logging Framework?
Keď dôjde k zlyhaniu aplikácie alebo servera, necháte sa čudovať prečo. Bola to chyba hardvéru, malware, možno útok typu Denial of Service alebo nejaká zvláštna kombinácia kľúčov, ktorá dokáže obísť všetky kontroly kódu? Len to nevieš.
Musíte zistiť, prečo došlo k havárii, aby sa dala opraviť. Pri zapnutom protokolovaní môžete zistiť, prečo sa to stalo.
Začíname
Stiahnite si súbor log4net z webovej stránky Apache log4net. Overte integritu stiahnutých súborov pomocou kontrolného súčtu podpisu PGP alebo MD5. Kontrolné súčty nie sú také silné ukazovatele ako podpis PGP.
Používanie protokolu Log4net
Log4net zvyšuje sedem úrovní protokolovania od žiadneho ku všetkým, čím sa zvyšuje jeho priorita. Sú to tieto:
- OFF
- FATAL
- CHYBA
- WARN
- INFO
- DEBUG
- ALL
Vyššie úrovne zahŕňajú všetky nižšie úrovne. Pri ladení použite DEBUG ukazuje všetko, ale o produkciu by ste sa mohli zaujímať iba o FATAL. Túto voľbu je možné vykonať na úrovni komponentov programovo alebo v súbore XML Config.
Zaznamenávači a dodatky
Pre flexibilitu používa log4net loggery, prídavné zariadenia a rozloženia. Logger je objekt, ktorý riadi protokolovanie a je implementáciou rozhrania ILog, ktoré špecifikuje päť boolovských metód: isDebugEnabled, IsInfoEnabled, IsWarnEnabled, IsErrorEnabled a IsFatalEnabled. Určuje tiež päť metód - ladenie, informácie, upozornenie, chyby a chyby - spolu s preťaženiami a piatimi formátmi reťazcov. Úplné rozhranie ILog nájdete v online príručke log4net.
Loggerom je priradená jedna z úrovní, ale nie VŠETKY alebo VYPNUTÉ, iba zvyšných päť.
Pridávatelia určujú, kam sa má protokolovanie viesť. Môže to byť do databázy, do vyrovnávacej pamäte v pamäti, do konzoly, vzdialeného hostiteľa, do textového súboru s priebežnými protokolmi, do protokolu udalostí systému Windows alebo dokonca do e-mailu prostredníctvom protokolu SMTP. Celkovo je k dispozícii 22 doplnkov a môžu byť kombinované, takže máte veľa možností. Pridávatelia sa pripoja (odtiaľ názov) k záznamníku.
Appenders filtruje udalosti podľa zhody podreťazcov, úrovne udalostí, rozsahu úrovní a začiatku mena loggeru.
rozvrhnutie
Nakoniec existuje sedem rozložení, ktoré môžu byť spojené s Appender. Tieto určujú, ako sa bude správa udalostí zaznamenávať, a môžu obsahovať text výnimky, rozloženie časovej pečiatky a Prvky XML.
Konfigurácia pomocou XML
Aj keď konfiguráciu je možné vykonať programovo, je možné ju vykonať aj pomocou súborov XML Config. Prečo by ste uprednostnili konfiguračné súbory pred zmenou kódu? Jednoducho, je oveľa ľahšie mať chlapa technickej podpory, aby urobil zmenu v konfiguračnom súbore, než aby musel programátora zmeniť kód, otestovať a znovu nasadiť novú verziu. Takže konfiguračné súbory sú cestou. Najjednoduchšou možnou cestou je pridať aplikáciu App.config, ako je uvedené v príklade nižšie:
Online dokumentácia log4net vysvetľuje všetky polia konfiguračného súboru. Po nastavení App.config pridajte pomocou log4net a tento riadok:
[montáž: log4net. Config. XmlConfigurator (Watch = true)]
Navyše skutočný záznamník musí byť vyvolaný volaním do aplikácie LogManager. GetLogger (...). GetLogger sa zvyčajne volá s typom (triedou), v ktorom sa používa, ale táto funkcia vyvolá tiež:
Systém. Reflexie. MethodBase. GetCurrentMethod (). DeclaringType
V tomto príklade sú zobrazené komentáre, takže si môžete vybrať.
pomocou log4net;
[montáž: log4net. Config. XmlConfigurator (Watch = true)]
namespace gvmake
{
program triedy
{
súkromný statický čitateľne ILog log = LogManager. GetLogger (systém. Reflexie. MethodBase. GetCurrentMethod
() .DeclaringType);
// private static readonly ILog log = LogManager. GetLogger (typof (Program));
static void Main (string [] args)
{
log. Ladenie („Spustenie aplikácie“);
}
}
}