2016-03-31 11 views
15

Desidero registrare i log del processo software in file. Invece di fare il mio sistema di log, sto cercando di utilizzare Log4Net con ASP.NET MVC, ma ho incontrato problemi di sua creazione in Visual Studio 2015, come:Come configurare/configurare Log4Net con ASP.NET (incluso MVC) C# in Visual Studio 2012 ~

  1. Come configurare web.config/Pagina Global.asax?

  2. Come installare i componenti in VS 2015?

  3. Come si utilizza nel file *.cs?

Quali sono i passaggi per configurare correttamente Log4Net con ASP.NET MVC C# in Visual Studio 2015?

Ho anche scritto un Q & A per configurarlo per ASP.NET WebForms, vedere How to use Log4net from Nuget with Visual Studio platform in the ASP.NET Web Form (Easy method).

risposta

52

Step1: utilizzare Nuget per ottenere il pacchetto log4net:

enter image description here

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(); 

enter image description here

Fase 3: aggiungere il confi sezione configurazione in Web.config tra tag <configSections>...</configSections>:

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

enter image description here

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> 

enter image description here

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(); 
} 

enter image description here

+0

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

+0

@ 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 –

+5

@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

Problemi correlati