«

»

Apr 27

Log4net in een C# .NET project

Iedere keer als ik log4net logging wil gebruiken in een project, vergeet ik weer hoe dat ook al weer moest. De apache site is er ook niet echt duidelijk over, of je moet in de SDK gaan zitten zoeken. Voorbeelden staan her en der verspreid. Vanwege de wens om enige consistentie te creeeren in mijn manier van logging en omdat ik graag overzicht heb, post ik hier de stappen om logging aan te zetten in je .NET project.

  1. Allereerst moeten we natuurlijk de log4net dll downloaden : http://logging.apache.org/log4net/download.html
  2. Dan leggen we een referentie naar de dll.
  3. Dan deze code bovenin je classes die je van logging wilt voorzien :
  4. private static ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.Name);

    (owja MethodBase.GetCurrentMethod zit in de Sytem.Reflection class en op deze manier hoef je niet iedere keer een naam in te voeren die de huidige class representeerd…)

  5. Vervolgens in de Page_Load van een Webapplicatie of in de Main van je console of Winforms applicatie :
  6. XmlConfigurator.Configure();
  7. Dan in de config-file (app.config of web.config) een configSection toevoegen :
  8. <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  9. Onderaan de config-file je log4net configuratie toevoegen :
  10. <log4net>
    <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
    <mapping>
    <level value="ERROR" />
    <foreColor value="White" />
    <backColor value="Red, HighIntensity" />
    </mapping>
    <layout type="log4net.Layout.PatternLayout, log4net">
    
    <param name="ConversionPattern" value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
    </appender>
    
    <appender name="GeneralFileLog" type="log4net.Appender.RollingFileAppender">       <file value="BertusTool.log" />       <appendToFile value="true" />       <maximumFileSize value="10000KB" />       <rollingStyle value="Size" />       <maxSizeRollBackups value="5" />       <layout type="log4net.Layout.PatternLayout, log4net">         <param name="ConversionPattern" value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />       </layout>     </appender>
    
    <!-- levels: DEBUG, INFO, WARN, ERROR, FATAL -->
    <root>
    <level value="INFO"/>
    <appender-ref ref="GeneralFileLog" />
    <appender-ref ref="ColoredConsoleAppender" />
    </root>
    </log4net>
    

    De eerste appender zorgt ervoor dat er een console geopend wordt, waarin gelogd wordt. De laatste appender is een fileappender.

  11. In je code kun je dan bijvoorbeeld zeggen :
  12. logger.Error("Help!", ex);
  13. Voor meer informatie over andere appenders :
  14. http://logging.apache.org/log4net/release/config-examples.html

Zo… dat vergeet ik niet zo snel meer :)

Edit : Een collega van me bij Sogyo kwam met de melding dat hij een errormelding kreeg op de log4net configuratie zoals hierboven beschreven. Na een onderzoek kwam ik tot de conclusie dat de SyntaxHighlighter de value in het conversionPattern foutief weergeeft. Ik heb het pattern vervangen door een simpele, die wel correct wordt weergegeven (bron : http://logging.apache.org/log4net/release/config-examples.html)

Edit2 : André Boonzaaijer heeft een sheet voor als je wilt weten hoe je standaard framework logging wilt gebruiken

1 comment

  1. Sjors

    hendig, die ga ik nog wel eens een keer nodig hebben met mijn geheugen gok ik.
    copy paste van andere projecten is niet “de” oplossing

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

%d bloggers like this: