In orice aplicaţie este bine sa ţinem evidenta operaţiilor făcute de utilizator( ce a modificat sau chiar ce a văzut). In acest scop putem folosi fie mecanismul de trace din .net, fie o soluţie proprie, fie Logging and Instrumentation Application Block(http://msdn2.microsoft.com/en-us/library/ms998162.aspx), fie log4net(http://logging.apache.org/log4net/
Vom utiliza in acest exemplu log4net .El suporta log-area operaţiilor in felurite moduri – in fişier, baza de date, email, telnet si multe altele.
Downloadati versiunea 1.2.10 de la adresa http://logging.apache.org/log4net/downloads.html si sa începem configurarea aplicaţiei. Copiaţi conţinutul folder-ului log4net-1.2.10\bin\net\2.0\debug in C:\Book\sharedDll si sa începem modificarea proiectului Windows pentru a înregistra ce a făcut utilizatorul
Deschidem Book.sln si deschidem App.Config. Acolo scriem următoarele imediat sub configuration:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<File value="Log4Net.log"/>
<AppendToFile value="true"/>
<rollingStyle value="Composite"/>
<maximumFileSize value="1MB"/>
<maxSizeRollBackups value="10"/>
<datePattern value="yyyyMMdd"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
</layout>
</appender>
<root>
<level value="Debug"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
După cum se vede, folosim RollingLogFileAppender ( adică un fişier a cărui denumire va fi diferita in fiecare zi după modelul datePattern ) de tipul Composite(daca depaseste maximumFileSize atunci se creează un nou fişier in ziua respectiva).
Sa adăugam referinţa proiectului nostru (BookWin) dll-ul log4net.dll din sharedDll .Avem de făcut următoarele in Program.cs :
In funcţia Main scriem prima linie:
log4net.Config.XmlConfigurator.Configure();
apoi adăugam următorul membru in clasa Program:
public static readonly log4net.ILog logger = log4net.LogManager.GetLogger("RollingLogFileAppender");
Haide sa scriem in fişier de cite ori un utilizator adaugă un nou Publisher.
In frmPublisherAdd.cs, la evenimentul private void btnAdd_Click(object sender, EventArgs e) vom adăuga codul de log-are:
if (Program.logger.IsDebugEnabled)
Program.logger.Debug("Adaugat publisher cu numele:" + p.Name);
Cam atit e de făcut. Acum rulaţi proiectul, adaugaţi un Publisher, si o sa vedeţi un fişier log4Net.log in care scrie următoarele:
<data> [1] DEBUG RollingLogFileAppender Adaugat publisher cu numele:newpub
E interesant la log4Net ca puteţi adăuga mai mulţi appender-i, astfel ca , de pilda, sa trimită si email de cate ori o modificare e făcuta.
Observatie 1:
Pentru aplicatia Web, modificarile in Web.Config sunt aceleasi - iar in global.asax trebuie pusa linia urmatoare:
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
log4net.Config.XmlConfigurator.Configure();
}
Observatie 2:
In loc sa punem codul in fiecare pagina de Web si Windowspe salvare, mai bine punem in fiecare cod de "salvare" al obiectelor- de pilda in public void Save()
Lectura obligatorie: documentaţia de log4net...
Post page:
http://serviciipeweb.ro/iafblog/2007/03/17/Tutorial+NET+P13+Logarea+Opera%c5%a3iilor+Cu+Log4net.aspxWeblog post by 'admin' on 'Tutorial .NET - p13 - Log-area operaţiilor cu log4net'
Categories:.NET;programare;tutoriale