2013-06-13 16 views
5

Utilizzo della versione 1.2.11. La registrazione funziona sulla mia macchina di sviluppo, ma non creerà la directory o il registro una volta implementato.Log4Net non di registrazione quando è stato distribuito

ho provato:

  • che dà accesso completo alle directory IUSR, tutti, gli utenti locali.
  • esecuzione del pool di app come account di amministratore locale.
  • per utilizzare il debug interno come Phil Haack describes here.

Arrestato e avviato il pool di app dopo ogni modifica.

Nulla viene prodotto nel file di output.

La mia configurazione di log4Net è riportata di seguito. Qualche idea su cosa provare dopo?

<?xml version="1.0"?> 
<log4net debug="true"> 
    <appender name="file" type="log4net.Appender.RollingFileAppender"> 
    <file value="..\Logging\log.txt" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Composite" /> 
    <datePattern value="yyyyMMdd" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="1MB" /> 
    <threshold value="DEBUG" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
    </layout> 
    </appender> 
    <appender name="console" type="log4net.Appender.DebugAppender"> 
    <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt; - %m%n" /> 
    </layout> 
    </appender> 
    <root> 
    <level value="ALL" /> 
    <appender-ref ref="file" /> 
    <appender-ref ref="console" /> 
    </root> 
</log4net> 
+0

è la directory di output o file creato? –

+0

No, nessuno dei due è stato creato. –

+1

Nel codice, stai configurando Log4Net per utilizzare la configurazione XML? Dovrebbe usare la classe 'XmlConfigurator' da qualche parte. –

risposta

6

Se la directory e il file non vengono creati, molto probabilmente, la configurazione non viene letta (e quindi utilizzata) in fase di esecuzione.

Ho sempre dimenticato di aggiungere la singola riga di codice per Log4net che collega la configurazione. Questo codice di solito appare nella classe bootstrap nell'applicazione (ad esempio Global.asax per un'app ASP.NET).

XmlConfigurator.Configure(new System.IO.FileInfo(configFile)); // configFile being the path to the file. 

Invece dei suddetti in-line, è possibile aggiungere questo attributo al file AssemblyInfo.cs:

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

Ad ogni modo, questo sarà cablare log4net. Ulteriori informazioni sono disponibili nello Manual Configuration section of the log4net docs.

+8

Non sono sicuro di come questo gli spieghi di essere in grado di accedere quando si trova in un ambiente di sviluppo. –

+2

Stavo battendo la testa contro il muro su questo per un po '. Ho provato a utilizzare il metodo AssemblyInfo.cs e quello ha funzionato sulla mia casella di sviluppo locale ma non sul server. Una volta ho aggiunto la riga 'XmlConfigurator.Configure();' al file Global.asax.cs, ha funzionato! – JebaDaHut

+0

Come @JebaDaHut - Stava lavorando sulla mia macchina di sviluppo utilizzando la linea AssemblyInfo.cs, ma non quando è stata distribuita. Dopo aver aggiunto 'XmlConfigurator.ConfigureAndWatch (new FileInfo (....))' ha iniziato l'accesso ai miei server di distribuzione. – silencedmessage

2

Suona come un problema di autorizzazioni per me. Utilizzo quasi sempre una directory in cui non è necessario abilitare autorizzazioni speciali per le applicazioni in cui scrivere i file di registro.

Ecco quello che io di solito uso con log4net:

<file type="log4net.Util.PatternString" value="${ALLUSERSPROFILE}/<Company Name>/Logs/<Program Name>/<Log file name>.txt" /> 

Di cource sarà necessario sostituire nome della società, nome del programma e il nome del file Log in quanto sopra con i valori effettivi.

Questo scriverà nella cartella ProgramData in cui l'accesso non è in genere limitato. È possibile accedere a questa cartella in Esplora file digitando% ProgramData% o% AllUsersProfile%

Un'altra cosa che mi piace di questo metodo è che funziona su quasi tutti i microsoft O/S. XP, Vista, 7, 8

2

Probabilmente non so dove si stanno registrando:

<file value="..\Logging\log.txt" /> 

Will è derivato dalla directory in esecuzione, che è iis la sua directory. È possibile utilizzare un percorso completo come:

<file value="c:\Logging\log.txt" /> 

Quindi è possibile assegnare i diritti di accesso corretti alla directory di registrazione. Log4net non creerà nessuna directory per quanto ne so. Quindi devi prima creare la directory c: \ logging.

0

non delle risposte ha lavorato per me fino a quando ho messo queste righe le impostazioni web.config app:

<add key="log4net.Config" value="Log.config" /> 
<add key="log4net.Config.Watch" value="True" /> 
Problemi correlati