Kun kirjoitat tietokonekoodi C # -kenttään on hyvä idea sisällyttää hakukoodi. Tällä tavoin kun jokin menee pieleen, tiedät mistä aloittaa etsiminen. Java-maailma on tehnyt tätä vuosia. Voit käyttää log4netiä tähän tarkoitukseen. Se on osa Apache log4j 2: ta, suosittua avoimen lähdekoodin kirjauskehystä.
Tämä ei ole ainoa .NET-kirjauskehys; on paljon. Kuitenkin Apache nimi on luotettava ja alkuperäinen Java-kirjauskehys on ollut olemassa jo yli 15 vuotta.
Miksi käyttää Log4net-kirjauskehystä?
Kun sovellus tai palvelin kaatuu, jätetään miettimään miksi. Oli se laitteistovika, haittaohjelma, ehkä palvelunestohyökkäys tai jokin pariton näppäinyhdistelmä, joka onnistuu ohittamaan kaikki kooditarkistuksenne? Et vain tiedä.
Sinun on selvitettävä, miksi kaatuu, jotta se voidaan korjata. Kun kirjaaminen on käytössä, saatat nähdä, miksi se tapahtui.
Päästä alkuun
Lataa log4net-tiedosto Apache log4net -sivustolta. Varmista ladattujen tiedostojen eheys PGP-allekirjoituksella tai MD5-tarkistussummilla. Tarkistussummat eivät ole yhtä vahvoja indikaattoreita kuin PGP-allekirjoitus.
Log4netin käyttäminen
Log4net tukee seitsemää kirjautumistasoa kaikista kaikille prioriteettien lisäämisessä. Nämä ovat:
- VINOSSA
- FATAL
- VIRHE
- VAROITTAA
- TIEDOT
- DEBUG
- KAIKKI
Ylemmät tasot sisältävät kaikki alemmat. Kun virheenkorjausta käytetään DEBUG näyttää kaikki, mutta tuotannossa saatat olla kiinnostunut vain FATAL. Tämä valinta voidaan tehdä komponenttitasolla ohjelmallisesti tai XML Config-tiedostona.
Hakkurit ja liitteet
Joustavuuden vuoksi log4net käyttää loggereita, liitteitä ja asetteluja. Loggeri on objekti, joka hallitsee kirjaamista ja on ILog-rajapinnan toteutus, joka määrittelee viisi boolean-menetelmää: isDebugEnabled, IsInfoEnabled, IsWarnEnabled, IsErrorEnabled ja IsFatalEnabled. Se määrittelee myös viisi menetelmää - virheenkorjaus, tiedot, varoitus, virhe ja fatal - sekä ylikuormitukset ja viisi alustettua merkkijonoversiota. Voit nähdä koko ILog-käyttöliittymän log4netin online-oppaassa.
Loggereille annetaan yksi tasoista, mutta ei ALL tai OFF, vain muut viisi.
Liitteet hallitsevat, missä hakkuut menevät. Se voi olla tietokantaan, muistiin puskuriin, konsoliin, etäisäntään, tekstitiedostoon, jolla on vierityslokeja, Windows-tapahtumalokiin tai jopa sähköpostitse SMTP: n kautta. Kaikkia appeenejä on 22, ja niitä voidaan yhdistää, joten sinulla on paljon valintoja. Liitteet lisätään (siis nimi) hakkuriin.
Liitteet lisäävät tapahtumia vastaavilla alimerkeillä, tapahtumatasolla, tasotasolla ja hakkurin nimen alussa.
ulkoasuja
Lisäksi on seitsemän asettelua, jotka voidaan liittää liitteeseen. Nämä ohjaavat, miten tapahtuman viesti kirjataan, ja voivat sisältää poikkeustekstin, aikaleiman asettelut ja XML-elementit.
Konfigurointi XML: n avulla
Vaikka konfigurointi voidaan tehdä ohjelmallisesti, se voidaan tehdä myös XML Config-tiedostoilla. Miksi mieluummin konfigurointitiedostot kuin koodimuutokset? Yksinkertainen, on paljon helpompaa saada tukimies muuttamaan konfiguraatiotiedostoa kuin saada ohjelmoija vaihtamaan koodia, testaamaan ja asentamaan uusi versio. Joten konfigurointitiedostot ovat tie. Yksinkertaisin mahdollinen polku on lisätä App.config-projekti projektiisi alla olevan esimerkin mukaisesti:
Log4netin online-ohjeissa selitetään kaikki konfigurointitiedostokentät. Kun olet määrittänyt App.config, lisää log4net-sovelluksella ja tämä rivi:
[kokoonpano: log4net. Config. XmlConfigurator (Katso = totta)]
Lisäksi todellinen hakija on haettava kutsulla LogManagerille. GetLogger (...). GetLogger kutsutaan yleensä typeof-luokalla (luokalla), jota se käyttää, mutta tämä funktiokutsut hakee myös:
Järjestelmä. Heijastus. MethodBase. GetCurrentMethod (). DeclaringType
Tämä esimerkki näyttää molemmat yhdessä yhden kommentoidun kanssa, joten voit valita.
log4netin avulla;
[kokoonpano: log4net. Config. XmlConfigurator (Katso = totta)]
nimiavaruus gvmake
{
luokkaohjelma
{
yksityinen staattinen luku vain ILog log = LogManager. GetLogger (Järjestelmä. Heijastus. MethodBase. GetCurrentMethod
() .DeclaringType);
// yksityinen staattinen luku vain ILog log = LogManager. GetLogger (typeof (Program));
staattinen void Main (merkkijono [] args)
{
Hirsi. Debug ("Sovelluksen käynnistäminen");
}
}
}