Jag bloggar numera på http://blog.dileno.com ».

Prenumerera på RSS

Använd log4net för loggning till filer i .NET

log4net är ett open source-bibliotek för loggning och kan användas för loggning till ett antal olika källor i ASP.NET. I denna artikel visar jag dig hur du loggar till filer.

Ladda ner log4net

För att kunna använda log4net behöver du först ladda ner zip-filen innehållandes dll-filen vi behöver för vårt projekt:

Ladda ner log4net från Apaches hemsida

Lägg till en referens till log4net i ditt projekt

För att kunna använda log4net behöver du lägga till log4net-binären i ditt projekt. I zip-filen du laddade ner bör log4net.dll som du ska lägga till finnas här: \log4net-1.2.10\bin\net\2.0\release.

Kopiera över log4net.dll till din bin-mapp och lägg till referensen:

  • Högerklicka på ditt projekt i Visual Studio, välj Add Reference.
  • Gå till fliken Browse, leta upp log4net.dll och klicka på Ok.

Lägg till log4net-konfiguration i Web.config

I Web.config, lägg till följande i <configSections>:

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

Lägg även till en referens till filen log4net.config som vi ska använda oss av, nedanför <configSections>, så att det ser ut så här:

<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net configSource="log4net.config" />

Skapa filen log4net.config

Lägg till en ny konfigurationsfil i roten för ditt projekt och döp den till log4net.config. log4net.config ska sedan se ut så här:

<log4net>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="c:\logs\applogg.txt" />
<appendToFile value="true" />
<maximumFileSize value="1024KB" />
<maxSizeRollBackups value="20" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="ERROR" />
<appender-ref ref="RollingFile" />
</root>
<logger name="TestLogger">
<level value="DEBUG" />
<appender-ref ref="RollingFile" />
</logger>
</log4net>

I log4net pekar vi ut var loggfilen för applikationen ska finnas (c:\logs\applogg.txt). Vi talar även om att en loggfil får vara max 1024 kB och om den överstiger denna filstorlek så skapas en ny loggfil med namnet applogg.log.1 ända upp till 20. I <root> anger vi rotinställningar, men man kan skapa en loggning med annorlunda egenskaper, som TestLogger ovan. Du kan även ange loggningsnivå, de som finns (i prioriterad ordning) är dessa:

  • ALL
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • FATAL
  • OFF

Loggning på sidnivå

För att du ska kunna logga på sidnivå behöver du lägga till följande i Application_Start i Global.asax:

log4net.Config.XmlConfigurator.Configure();

I sidan du ska använda loggningen på måste du först importera log4net via using-direktivet och sedan lägga till följande variabel:

ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

Ovanstående variabel går mot rotinställningarna för loggningen. Vill du använda de inställningar du har specifierat själv (exempelvis loggen med namnet TestLogger, se tidigare kod) så anropar du bara loggnamnet så här:

ILog log = log4net.LogManager.GetLogger("TestLogger");

För själva loggningen använder du sedan någon av följande metoder:

log.Debug("...");
log.Error("...");
log.Fatal("...");
log.Info("...");
log.Warn("...");

log4net-manual

Detta är ett exempel på hur du loggar till filer med log4net. Vill du bygga vidare på din loggning finns massa nyttig information i log4net-manualen.

Kommentarer

Riktigt snygg och trevlig artikel, men jag skulle vilja byta
ILog log = LogManager.GetLogger(
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
mot
private static readonly ILog = LogManager.GetLogger(typeOf(MyClass));

För att:
1) om den inte deklareras static kommer en logger hämtas för varje nytt skapat objekt.
2) System.Reflection.MethodBase.GetCurrentMethod().DeclaringType är tung
Det är bättre att göra en statisk upslagning not den körande klassen

Jag skrev en mer anvanerad hantering av detta i mitt anteckningsblock
http://epiwiki.se/developing/log4net/Create-a-log-message-programmatically

Till sidhuvudet

Clicky Web Analytics