Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Log4Net funziona su una macchina Dev, fallisce quando viene distribuito su host condiviso (usando lo stesso db/connstring)

Nella mia esperienza, log4net di solito ingoia eventuali errori interni, risultando semplicemente in istruzioni di log che non producono alcun risultato.

Quello che potresti voler provare è abilitare la registrazione interna di log4net. Puoi farlo aggiungendo quanto segue alle tue appSettings sezione:

<add key="log4net.Internal.Debug" value="true" />

Questo imposta la proprietà LogLog.InternalDebugging su true . log4net ora registrerà sull'output standard e sui flussi di errore e sui listener di traccia configurati.

È possibile utilizzare la configurazione seguente per acquisire tutti i messaggi registrati per la traccia:

<system.diagnostics>
  <trace autoflush="false" indentsize="4">
    <listeners>
      <add name="myListener"
        type="System.Diagnostics.TextWriterTraceListener"
        initializeData="c:\TextWriterOutput.log" />
      <remove name="Default" />
    </listeners>
  </trace>
</system.diagnostics>

Tutti i messaggi registrati internamente da log4net appariranno in TextWriterOutput.log . Se ricevi una SecurityException quando aggiungi il trace listener alla tua configurazione, molto probabilmente l'identità dell'apppool non ha diritti sufficienti per creare un file nella posizione specificata (nell'esempio:c:\ ). Prova un'altra posizione o concedi diritti sufficienti all'identità dell'apppool.