Log4Net non registra quando viene distribuito

Log4Net non registra quando viene distribuito

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

Dimentico sempre di aggiungere la singola riga di codice per Log4net che collega la configurazione. Questo codice viene solitamente visualizzato nella classe bootstrap nell'applicazione (ad es. Global.asax per un'app ASP.NET).

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

Invece di quanto sopra in linea, puoi aggiungere questo attributo a AssemblyInfo.cs file:

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

In ogni caso, questo collegherà log4net. Maggiori informazioni si trovano nella sezione Configurazione manuale dei documenti log4net.


Se stai usando IIS, assicurati che il gruppo corretto abbia l'accesso in modifica alla cartella Logs (solitamente IIS_USERS).


Mi sembra un problema di autorizzazioni. Uso quasi sempre una directory in cui non devo abilitare autorizzazioni speciali per le applicazioni in cui scrivere i file di registro.

Ecco cosa uso generalmente con log4net:

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

Ovviamente dovrai sostituire il nome dell'azienda, il nome del programma e il nome del file di registro nei precedenti con i valori effettivi.

Questo scriverà nella cartella ProgramData dove l'accesso in genere non è limitato. Puoi 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 sistemi operativi Microsoft. XP, Vista, 7, 8