2009-02-16 10 views
6

Si sta tentando di utilizzare Log4Net per eseguire il log dall'applicazione WCF distribuita con IIS 6. Stiamo cercando di accedere a un file, ma non sembra che i file di log possano essere creati, per non parlare del loro output di registrazione. I pezzi provenienti dal web.config sono:Impossibile far funzionare Log4Net nella nostra applicazione WCF

<sectionGroup name="common"> 
    <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" /> 
</sectionGroup> 
... 
<common> 
    <logging> 
     <factoryAdapter type="Common.Logging.Simple.TraceLoggerFactoryAdapter, Common.Logging"> 
      <arg key="level" value="INFO" /> 
      <arg key="showLogName" value="true" /> 
      <arg key="showDataTime" value="true" /> 
      <arg key="dateTimeFormat" value="yyyy/MM/dd HH:mm:ss:fff" /> 
     </factoryAdapter> 
    </logging> 
</common> 

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender"> 
     <param name="File" value="c:\logs\ApplicationInfoTest.log" /> 
     <threshold value="INFO" /> 
     <param name="AppendToFile" value="true" /> 
     <param name="DatePattern" value="ddMMyyyy" /> 
     <param name="MaxSizeRollBackups" value="10" /> 
     <param name="MaximumFileSize" value="10MB" /> 
     <param name="RollingStyle" value="Size" /> 
     <param name="StaticLogFileName" value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <param name="Header" value="\r\n\r\n---------------------------------------------\r\n" /> 
      <param name="Footer" value="\r\n---------------------------------------------\r\n\r\n" /> 
      <param name="ConversionPattern" value="%d [%t] %-5p - %m%n" /> 
     </layout> 
    </appender> 
    <root> 
     <level value="INFO" /> 
     <appender-ref ref="FileAppender" /> 
    </root> 
    </log4net> 

Con questa configurazione possiamo vedere logging livello INFO uscendo nostra applicazione utilizzando DebugView, ma è chiaro che questo è dal pezzo e non sono
pezzo.

C'è qualcosa che non è stato possibile configurare in web.config? È un problema di autorizzazioni con la directory che abbiamo creato per la scrittura dei log?

Si prega di indicare il nostro errore evidente.

+1

@GeorgeStocker Come è questo il duplicato come era 2 anni prima della altra? –

risposta

5

Usa ProcessMonitor from SysInternals per scoprire dove i permessi vengono rifiutati

(Potenzialmente è possibile determinare le stesse informazioni allegando un debugger e la cattura sulle eccezioni, non in Just My Code)

Sei sicuro che il processo in cui è in esecuzione il servizio ha autorizzazioni per la cartella in cui stai cercando di scrivere?

+0

Ciao Ruben. Grazie per l'input. La cartella (per ora, fino a quando non funziona) ha le autorizzazioni di "Controllo completo" per tutti gli utenti di ANONYMOUS LOGIN e Administrators. –

+0

Procmon è l'uomo se c'è qualche confusione - che ti mostrerà quale principale non riesce a fare ciò che vuole e dove. L'aggiunta degli utenti amministratori non aiuta. In genere, i pool di applicazioni predefiniti vengono eseguiti come servizio di rete. Ma tu stai molto meglio imparando a pescare in questo caso. –

+0

Prendo dalla descrizione del problema che si è definitivamente collegato all'inizializzazione mentre sta avvenendo il normale logging - dovresti tenere due appenders configurati per essere sicuro che sia ancora solo uno fallito. –

8

Ho anche dovuto aggiungere questa riga al file AssemblyInfo.cs della mia applicazione per far funzionare log4net.

// LOG 4 net config 
[assembly:log4net.Config.XmlConfigurator(Watch=true)] 
+0

Sicuramente il normale logging non funzionerebbe quindi - ha dimostrato che la configurazione non è il problema? –

+0

Si noti che è necessario specificare questa riga nel progetto/dll dove si sta utilizzando log4net la prima volta. Pertanto, di solito non mi azzardo e lo aggiungo in tutti i miei assemblyInfo.cs. – Ruben

+0

quale progetto devi aggiungere in modo specifico questa riga perché ho l'implementazione del mio servizio in un progetto diverso, l'host WCF in un progetto diverso e un progetto separato dove gestisco l'errore .. – chugh97

0

Avete una sezione di configurazione configurata per log4net? Non l'ho visto nello snippet di codice

0

Per prima cosa eseguo il servizio WCF come applicazione console: in questo modo è possibile specificare l'account utente per l'esecuzione dell'applicazione e vedere se il problema è con la configurazione o con un problema di autorizzazioni che esegue il servizio tramite IIS.

Se non siete sicuri di come eseguire il servizio come un'applicazione di console dare un'occhiata a http://www.jacopretorius.net/2009/08/running-windows-service-inside-console.html

2

Try XmlConfigurator.Configure()

Problemi correlati