Domanda

Quando si accede con Log4Net è molto semplice inserire la classe che ha chiamato il log nel file di log.In passato ho scoperto che questo rende molto facile tracciare il codice e vedere il flusso attraverso le classi.In Log4Net utilizzo la proprietà %logger nel modello di conversione in questo modo:

<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />

E questo mi dà l'output che desidero:

2008-09-19 15:40:26,906 [3132] ERROR <b>Log4NetTechDemo.Tester</b> [(null)] - Failed method

Dall'output puoi vedere che la classe che ha chiamato il log è Log4NetTechDemo.Tester, quindi posso risalire abbastanza facilmente all'errore a quella classe.

Nel blocco dell'applicazione di registrazione non riesco a capire come farlo con una semplice chiamata di registro.Qualcuno sa come si può fare?In tal caso, un esempio o i passaggi per farlo sarebbero molto utili.

È stato utile?

Soluzione

Aggiungi il metodo chiamante al dizionario ExtendedProperties di LogEntry;presupponendo che tu non abbia rimosso i token ExtendedProperties dal modello di formattazione, ovviamente.

Inserisci qualcosa di simile in un wrapper di registrazione:

public void LogSomething(string msg)
{
  LogEntry le = new LogEntry { Message = msg };
  le.ExtendedProperties.Add("Called from", new StackFrame(1).GetMethod().ReflectedType);
  Logger.Write(le);
}

Chiamandolo si produce qualcosa di simile alla fine del registro:

Extended Properties: Called from - LAB_Demo.Tester

Altri suggerimenti

Non abbiamo trovato un modo semplice senza utilizzare StackTrace.Se si tratta di un'eccezione, prendiamo semplicemente da quello:

 StackTrace trace = new StackTrace(ex, true);
 StackFrame frame = trace.GetFrame(0);

Per gli elementi chatty, scriviamo semplicemente la stringa.Abbiamo uno snippet in grado di acquisire il nome della classe durante l'inserimento.Dichiariamo anche la stringa const con il nome della classe.

Non carino, ma è il migliore che abbiamo trovato.Spero che qualcun altro abbia una risposta migliore in questo thread :)

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