2010-04-27 17 views
6

Non sono sicuro se questo è il forum giusto per pubblicare questa domanda. Ma spero solo che qualcuno qui possa aver usato log4net in passato, sperando così di ottenere un aiuto.log4net registrazione non crea file di registro

Sto utilizzando log4net per registrare le mie eccezioni. Le impostazioni di configurazione simile a questa:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
</configSections> 
<log4net debug="false"> 
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="C:\Logs\sample.log" /> 
    <appendToFile value="true"/> 
    <rollingStyle value="Size"/> 
    <maxSizeRollBackups value="10"/> 
    <maximumFileSize value="10MB"/> 
    <staticLogFileName value="true"/> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%-5level %date %logger.%method[line %line] - %message%newline"/> 
    </layout> 
</appender> 
<root> 
    <level value="INFO"/> 
    <appender-ref ref="RollingLogFileAppender"/> 
</root> 
</log4net> 
</configuration> 

ho iniziato con l'aggiunta di questa configurazione di web.config, ma ho ottenuto un errore (VS monolocale non riusciva a trovare uno schema per log4net- "Impossibile trovare informazioni sullo schema per la elemento log4net "). Così ho seguito questo link (Log4Net "Could not find schema information" messages) e configurato le mie impostazioni in un file XML separato e ha aggiunto la seguente riga di codice nel mio AssemblyInfo.cs:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "xmlfile.xml", Watch = true)] 

E nel codice vero e proprio, ho messo questa linea:

public void CreateUser(String username, String password) 
{ 
try 
{ 
    log.Info("Inside createuser"); 
    //code for creating user 
} 
catch(exception e) 
{ 
    log.Info("something happened in create user", e); 
} 
} 

Il problema è che il file di registro non viene creato. Non riesco a vedere nulla all'interno di C: \ Logs. Qualcuno può dirmi cosa sto facendo di sbagliato qui?

Qualsiasi suggerimento/input sarà molto utile.

Grazie a tutti in anticipo.

risposta

1

Il file di registro non viene creato probabilmente perché l'utente ASPNET non dispone dell'autorizzazione per scrivere nella directory C:\Logs\. Assicurati di dare tutti i diritti su ASPNET ovunque la tua applicazione voglia creare il file di registro.

6

non ho potuto ottenere l'impostazione nel Asembly.cs di lavorare senza l'aggiunta di questo Application_Start nel mio Global.asax:

log4net.Config.XmlConfigurator.Configure(); 
+0

questo richiederebbe la configurazione essere in app/web.config –

+0

No necessariamente. Quel metodo ha diversi sovraccarichi che potresti usare. – jvilalta

+0

Vedo, ho avuto l'impressione che tu suggerissi di usare il sovraccarico senza parametri ... –

1

Così si sta caricando il file di configurazione, ma poi stai impostando la variabile di registro come così

private static readonly ILog log = LogManager.GetLogger(typeof(Program)); 
+0

Sì, sto facendo questo –

0

a meno che non si specifica un percorso completo per il file di configurazione log4net separata si aspetta che il file sia nel percorso restituito da:

System.AppDomain.CurrentDomain.BaseDirectory 

Se si dispone di un'applicazione di console semplice, ciò in genere indica la directory contenente l'assembly, ma in altri casi ciò non è necessariamente vero. Ci sono molti modi per risolvere questo problema (c.f. anche la mia risposta here).

Per avviarlo potrebbe essere più semplice riportare la configurazione di log4net all'app/web.config e ignorare lo schema avviso. Se la registrazione funziona, puoi essere certo di non avere problemi di autorizzazione e passare al passaggio successivo per avere la configurazione in un file esterno.

Che tipo di applicazione stai scrivendo? Forse potrei essere un po 'più specifico con la mia risposta ...

+0

Grazie per la risposta. Stavo lavorando con un servizio. Il problema è risolto ora.Apparentemente c'era qualche problema nella configurazione del servizio stesso. Una volta risolto, tutto il resto ha funzionato. –

Problemi correlati