Domanda

Ho bisogno di catturare le eccezioni Log4Net (le sue eccezioni non le eccezioni dell'app registrano da esso). Vorrei che ci sia un modo per farlo in questo modo:

Try
    _logger.Info(response)
Catch ex As Exception
    Excepciones.HandleException(ex, "PolicyCore")
End Try
.

Ho l'implementato questo codice e non ci sono errori in compilazione, ma la forza LOG4NET per avere un errore (indicando un database non esistente nel file di configurazione) e nulla è gettato.
Ho provato l'ascoltatore Apraoach:

 <appSettings>
        <add key="log4net.Internal.Debug" value="true" />
    </appSettings>
    <system.diagnostics>
       <trace autoflush="true" indentsize="4" >
         <listeners>
           <add name="textWriterTraceListener" 
               type="System.Diagnostics.TextWriterTraceListener"
               initializeData="C:\\temp\\log4net.txt" />
           <remove name="Default" />
         </listeners>
       </trace>
    </system.diagnostics>
.

E sta scrivendo gli errori per LOG4Net.txt, quelli forzati intendo.

L'ultima scopa ha un paio di inconvenienti: non aggiungerà ogni errore al file, se l'errore è lo stesso non lo scrive, non riesco a ottenere l'ascoltatore per scrivere ogni errore in quel file , Solo uno (non so come configurare completamente il listener di traccia, potrebbe essere questo). Quindi non aggiungerà la data e l'ora ad ogni linea che è una necesia per me. Finalmente non posso dare la struttura ad essa (XML).

Anche se il funzionamento dell'ascoltatore ho bisogno di utilizzare il Try / Catch Apraoach , poiché sto usando l'esecuzione di un'eccezione dalla libreria aziendale per registrare gli errori nella mia app.

Chiunque abbia affrontato il problema e / o ha una soluzione?

È stato utile?

Soluzione

LOG4NET è progettato per non lanciare eccezioni.Questa sembra essere una buona idea perché sarebbe molto brutta se la tua applicazione non riesce perché non può registrare.Quindi se è necessario registrare determinati messaggi e devi essere sicuro che questo ha funzionato, non dovresti usare un framework di registro, ma piuttosto implementarlo come parte della tua "logica aziendale".

Si dice che un'eccezione viene registrata solo una volta.Penso che non sia vero: LOG4NET di solito disabilita gli appunti che non funzionano e quindi c'è solo un'eccezione.L'adonetappender ad esempio può essere configurato su Re-connect al database in caso di fallimento nel qual caso vedresti ilstessa eccezione più volte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top