Als je schrijft computer code in C # is het een goed idee om logcode op te nemen. Op die manier weet u waar u moet beginnen met zoeken als er iets misgaat. De Java-wereld doet dit al jaren. Hiervoor kunt u log4net gebruiken. Het maakt deel uit van Apache log4j 2, een populair open source logging-framework.
Dit is niet het enige .NET logging framework; er zijn veel. echter, de Apache naam is vertrouwd en het originele Java logging framework bestaat al meer dan 15 jaar.
Waarom een Log4net Logging Framework gebruiken?
Wanneer een applicatie of server crasht, vraag je je af waarom. Was het een hardwarefout, malware, misschien een Denial of Service-aanval of een vreemde combinatie van sleutels die al uw codecontroles weet te omzeilen? Je weet het gewoon niet.
U moet weten waarom er een crash is opgetreden, zodat deze kan worden gecorrigeerd. Als logboekregistratie is ingeschakeld, kunt u mogelijk zien waarom het is gebeurd.
Ermee beginnen
Download het log4net-bestand van de Apache log4net-website. Controleer de integriteit van de gedownloade bestanden met behulp van de PGP-handtekening of MD5-checksums. De checksums zijn niet zo sterke indicatoren als de PGP-handtekening.
Log4net gebruiken
Log4net ondersteunt zeven niveaus van logging van geen tot allen met toenemende prioriteit. Dit zijn:
- UIT
- FATAL
- FOUT
- WAARSCHUWEN
- INFO
- DEBUG
- ALLEMAAL
De hogere niveaus omvatten alle lagere niveaus. Bij het debuggen met DEBUG toont alles, maar bij productie bent u misschien alleen geïnteresseerd in FATAL. Deze keuze kan programmatisch op componentniveau worden gemaakt of in een XML Config-bestand.
Houthakkers en appenders
Voor flexibiliteit gebruikt log4net loggers, appenders en lay-outs. Een logger is een object dat het loggen regelt en is een implementatie van de ILog-interface, die specificeert vijf booleaanse methoden: isDebugEnabled, IsInfoEnabled, IsWarnEnabled, IsErrorEnabled en IsFatalEnabled. Het specificeert ook de vijf methoden - Debug, Info, Warn, Error enFatal - samen met overbelasting en vijf opgemaakte stringversies. U kunt de volledige ILog-interface bekijken in de online handleiding van log4net.
Loggers krijgen een van de niveaus toegewezen, maar niet ALLE of UIT, alleen de andere vijf.
Appenders bepalen waar de logging naartoe gaat. Het kan in een database, in een in-memory buffer, in de console, in een externe host, in een tekstbestand met rolling logs, in het Windows Event Log, of zelfs in e-mail via SMTP. Er zijn in totaal 22 appenders en ze kunnen worden gecombineerd, dus je hebt veel keuzes. Appenders worden (vandaar de naam) aan een logger toegevoegd.
Appenders filteren gebeurtenissen door substrings, gebeurtenisniveau, bereik van niveaus en begin van de loggernaam op elkaar af te stemmen.
Indelingen
Ten slotte zijn er zeven indelingen die aan een Appender kunnen worden gekoppeld. Deze bepalen hoe het bericht van de gebeurtenis wordt vastgelegd en kunnen uitzonderings-tekst, tijdstempel-indelingen en bevatten XML-elementen.
Configureren met XML
Hoewel het configureren programmatisch kan worden gedaan, kan het ook worden gedaan met XML Config-bestanden. Waarom geeft u de voorkeur aan configuratiebestanden boven codewijzigingen? Eenvoudig, het is veel gemakkelijker om een ondersteuningsmedewerker een configuratiebestand te laten wijzigen dan om een programmeur de code te laten wijzigen, een nieuwe versie te testen en opnieuw te implementeren. Configuratiebestanden zijn dus de juiste keuze. Het eenvoudigste pad is om App.config toe te voegen aan uw project, zoals weergegeven in het onderstaande voorbeeld:
In de online documentatie van log4net worden alle velden van het configuratiebestand uitgelegd. Na het instellen van App.config, voeg toe met behulp van log4net en deze regel:
[montage: log4net. Config. XmlConfigurator (Watch = true)]
Bovendien moet de daadwerkelijke logger worden opgehaald met een oproep aan LogManager. GetLogger (...). De GetLogger wordt meestal aangeroepen met het type (klasse) waarin het wordt gebruikt, maar deze functieaanroep haalt ook op dat:
Systeem. Reflectie. MethodBase. GetCurrentMethod (). DeclarationType
Dit voorbeeld toont beide met één opmerking, dus u kunt kiezen.
log4net gebruiken;
[montage: log4net. Config. XmlConfigurator (Watch = true)]
naamruimte gvmake
{
klasse programma
{
privé statisch alleen lezen ILog log = LogManager. GetLogger (systeem. Reflectie. MethodBase. GetCurrentMethod
() .Declaratietype);
// privé statisch alleen lezen ILog log = LogManager. GetLogger (typeof (Program));
statische leegte Main (string [] args)
{
logboek. Debug ("Applicatie starten");
}
}
}