Antonio "tdj"

(C'è sempre un modo migliore)
posts - 312, comments - 268, trackbacks - 17

My Links

News





Tag Cloud

Article Categories

Archives

Post Categories

Image Galleries

Articoli

Blogs

Controlli WinForm free

Guide

Siti vari

Sviluppo

Configurare log4net

Visto che ogni volta mi dimentico come si fà, ho deciso di scriverlo così almeno so dove andare a copiare :)


Per chi non lo sapesse (spero pochissimi) log4net è una utility free che permette di inserire nelle applicazioni .net un log manager potente.
Fondamentalmente permette di gestire log in tutte le salse, dal semplice file di testo, ad una tabella in un database, all'invio di e-mail di notifica, ecc...

Vediamo come intergrarlo in un'applicazione .net.

1) Beh, scaricare l'assembly da qui e poi aggiungere un riferimento ad esso nel progetto;

2) la configurazione può essere fatta in diversi modi. Quello che preferisco è utilizzare un file esterno al web.config (o App.config). In ogni caso, a prescindere dalla posizione, la sostanza non cambia.
Ecco un esempio di log su file:

   1:  <log4net>
   2:    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
   3:      <file value="Log\file_name.log" />
   4:      <appendToFile value="true" />
   5:      <rollingStyle value="Composite" />
   6:      <datePattern value="yyyy-MM-dd" />
   7:      <maxSizeRollBackups value="3" />
   8:      <maximumFileSize value="1MB" />
   9:      <layout type="log4net.Layout.PatternLayout">
  10:        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
  11:      </layout>
  12:    </appender>
  13:   
  14:    <root>
  15:      <level value="DEBUG" />
  16:      <appender-ref ref="RollingLogFileAppender" />
  17:    </root>
  18:  </log4net>

Un <appender> rappresenta la modalità di gestione del log ed ognuno ha una serie di parametri che ne consentono la personalizzazione. Nell'esempio gestiamo un file di dimensione massime di 1MB mantenendo un numero di backup di 3 file dove ciascuna linea di log ha il formato specificato nell'elemento <layout>.
Nell'elemento <root> possiamo specificare quali livelli intendiamo gestire (DEBUG, INFO, WARNING, ERROR) per i vari appender registrati. Per esempio dal livello DEBUG in poi.

3) Ora non resta che comunicare a log4net come leggere la nostra configurazione. Un modo molto semplice è quello di aggiungere un attributo al nostro assembly di progetto come questo:

<Assembly: log4net.Config.XmlConfigurator(ConfigFile:="log4net.config", Watch:=true)>

4) Per tenere traccia dei log nell'applicazione bisogna definire un oggetto di tipo ILog a cui va passato il tipo a cui si riferisce:

Dim MyLog As ILog = LogManager.GetLogger(GetType(MyClassName))

e poi chiamare uno dei metodi a seconda del livello che si intende registrare:

MyLog.Debug("....")

Ciascun metodo consente di accettare, oltre al messaggio di testo, anche un oggetto Exception che viene accodato al testo.

E' tutto. Altri dettagli sulla configurazione li trovate qui.

Print | posted on mercoledì 14 maggio 2008 03:39 | Filed Under [ Dev .NET WinForms Asp.net ]

Feedback

Gravatar

# re: Configurare log4net

Molto interessanto ed utile. Vedo di inserirlo fin da ora nelle mie applicazione .Net.
Grazie Antonio.
15/05/2008 10:37 | P.Stefano
Gravatar

# re: Configurare log4net

Io è un pò che lo sto guardando ma mi sembra che il progetto sia 'morto'.

Non vedo aggiornamenti da veramente tanto tempo (quasi un anno).

Non è che convenga passare al "Logging Application Block" della Microsoft presente nell'Enterpise Library ?
http://msdn.microsoft.com/it-it/library/cc511607(en-us).aspx
29/05/2008 15:17 | LuigiZ
Gravatar

# re: Configurare log4net

Se utilizzi EL e' più conveniente utilizzare LAB. Personalmente non l'ho mai utilizzato quindi no saprei dare giudizi.

Per ora log4net mi soddisfa ampiamente :) sia per semplicità che per flessibilità.

30/05/2008 00:29 | Antonio "tdj" Catucci
Gravatar

# re: Configurare log4net

Sicuramente sono daccordo con te per quanto riguarda flessibilità e soprattutto semplicità nel distribuire la libreria (un solo file), LAB si porta appresso più elementi di tutta la Library (vari common, utility, etc).

L'unico mio dubbio era rivolto allo scarso aggiornamento della libreria, magari è semplicemente dovuto al fatto che al momento non ci sono problemi e tanto meno features da implementare :-)

Ciao.
30/05/2008 11:59 | LuigiZ
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET