Step1: utilizzare Nuget per ottenere il pacchetto log4net:
Step2: dire log4net inizializzare stessa dalla configurazione XML (Web.config), con l'aggiunta di questa chiamata nel file Global.asax.cs
sotto Application_Start()
:
log4net.Config.XmlConfigurator.Configure();
Fase 3: aggiungere il confi sezione configurazione in Web.config tra tag <configSections>...</configSections>
:
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
Inserire la configurazione attuale log4net <log4net>...</log4net>
, vedere Apache log4net™ Config Examples per altri esempi:
<log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs\log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="100KB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
Ora si' pronto per effettuare chiamate a ILog
a wr ite dichiarazioni di registro effettivi al appender configurato (s):
ILog log = log4net.LogManager.GetLogger(typeof(HomeController));
public ActionResult Index()
{
log.Debug("Debug message");
log.Warn("Warn message");
log.Error("Error message");
log.Fatal("Fatal message");
ViewBag.Title = "Home Page";
return View();
}
fonte
2016-03-31 10:07:28
C'è una ragione impellente per quella statica membro "Log"? Il mio modo di vedere è che tutto ciò di cui hai bisogno è il membro non statico "log" ... – marco6
@ marco6 Ciao signore grazie mille per la tua risposta alla tua domanda, io uso solo "statico" per lo stile di codifica personale, se tu voglio sapere perché si prega di controllare questo [URL] (https://msdn.microsoft.com/en-us/library/79b3xss3 (v = vs80) .aspx) grazie ancora –
@WillieCheng Il mio commento riguardava il fatto che mentre l'utilizzo di un membro statico è IMHO la scelta più vantaggiosa, il codice utilizza un'istanza non statica per eseguire ogni azione ("ILog log" è chiaramente non statico, mentre il registro statico non viene mai inizializzato). Avrei fatto qualcosa di simile: "privato ILog log statico {get;} = LogManager.GetLogger (typeof (HomeController));" e rimuovi la tua seconda dichiarazione. – marco6