2012-03-28 9 views
8

Sto utilizzando log4net 1.2.11. Quindi, il logging funziona su una macchina per sviluppatori, ma quando pubblico in un server di test non funziona. Effettuando il debug in remoto, ho visto che il log è stato caricato correttamente nella variabile ILog, ma quando chiama log.Error(), non succede nulla, nessun file di log, nessuna eccezione log4net.Log4net accede al computer dello sviluppatore, ma nel server di test non registra

Qualsiasi ideologia?

Obs: sto utilizzando il log4net in un sito Web di asp.net mvc 3.

- EDIT

ho messo Controllo completo a tutti ... non cambiare nulla, nessun file di log.

+0

ApplicationPoolIdentity è l'identità predefinita per IIS 7.5 –

risposta

8

Abilitare il debug di log4net per ottenere ulteriori informazioni sul problema. Senza questo, log4net fallisce silenziosamente ed è molto difficile risolvere i problemi di configurazione.

Controllare How do I enable log4net internal debugging? su log4net FAQS

Prendere in considerazione se avete problemi di autorizzazioni (come Shyju rilevare), che l'identità predefinita per IIS 7.5 è ApplicationPoolIdentity e non Network Service

Here avete istruzioni su come risorse sicure per ApplicationPoolIdentity .Controllare la sezione "Risorse Protezione"

+0

"ApplicationPoolIdentity' non esiste. = ( –

+0

@Vinicius Otton: aggiunto un collegamento per aiutare a mamage autorizzazioni per ApplicationPoolIdentity –

+0

Trovo che l'utente NetworkService sia possibile utente a IIS Pool Identity. C'è qualche problema o qualcosa che devo prendere in considerazione dopo aver cambiato l'identità del pool IIS in NetworkService? Perché l'ApplicationPoolIdentity non esiste. –

5

Verificare che la cartella disponga di autorizzazioni sufficienti per ASP.NET per scrivere un file in tale posizione. Molto probabilmente questo è il motivo se ha funzionato nella macchina Dev

alcune soluzioni

nel Dev maching eliminare il file di registro e la cartella ed eseguirlo come nuovo e vedere se crea un file di registro. Se sì, non c'è nulla da cambiare nel codice. Dovrebbe essere una cosa di permesso. Quindi consente di ricontrollare le autorizzazioni

Come Claudio Redi menzionato nella sua risposta, è anche possibile abilitare il debug interno di log4net per ottenere maggiori informazioni. Controllare la sezione chiamata "Come si abilita log4net debug interno?" per maggiori dettagli in questo link http://logging.apache.org/log4net/release/faq.html

Da loro documentazione

Perché non è possibile accedere a un FileAppender da un web applicazione?

L'applicazione Web viene eseguita come account utente speciale sul server Web chiamato ASPNET. Questo account ha autorizzazioni limitate per proteggere il server Web dagli attacchi. Per impostazione predefinita, questo account potrebbe non avere l'autorizzazione per scrivere sul file system. Assicurarsi che l'account ASPNET disponga dell'autorizzazione per creare e scrivere su file nella directory selezionata per la registrazione.

+0

ho messo Controllo completo di servizi di rete e niente cambiamento ... alcun file di registro. –

+0

@ViniciusOttoni: Come parte del test del permesso, dare il permesso a "Tutti" e vedere se sta apportando modifiche. quindi puoi portarlo via e dare un permesso specifico per l'utente di ASP.NET – Shyju

+0

Ho messo il controllo completo su TUTTI e non cambierà nulla, nessun file di registro. = ( –

1

Nel mio caso, il riferimento a log4.config all'interno web.config era sbagliato:

<add key="log4net.Config" value="log4.config"/> 

punta alla cartella principale, e sulla mia macchina dev, log4.config era in realtà lì, quindi la registrazione avrebbe fatto lavoro.

Tuttavia, su una build, log4.config viene copiato nella cartella bin, l'unico posto che si troverebbe dopo una distribuzione.

Modifica del lavoro di registrazione web.config a

<add key="log4net.Config" value="bin/log4.config"/> 

fatta ovunque per me

Problemi correlati