3 Stimmen

Beste Möglichkeit, um Protokollierung in einer vorhandenen Anwendung (Windows oder Web) .Net hinzuzufügen.

Ich habe mehrere .Net (C#) Anwendungen geerbt, die keine Protokollierung oder Logging enthalten. Diese Anwendung erledigt alles von der Erstellung, dem Lesen, Aktualisieren und Löschen von Datensätzen. Sie sendet E-Mails und ruft Webdienste auf.

Natürlich ist es ein Albtraum, sie zu pflegen, weil keine Protokollierung und kein Try-Catch-Mechanismus vorhanden sind (ich konnte es auch nicht glauben).

Wie könnte man also am besten Logging in diesem System implementieren? Ich kann nicht zu jedem Funktionsaufruf gehen und Logging-Zeilen hinzufügen. Gibt es eine Möglichkeit, dynamisches Logging zu haben, das basierend auf den von mir bereitgestellten Methodennamen protokolliert?

Zum Beispiel, wenn UpdateOrder() aufgerufen wird, sollte mein Logger protokollieren (die Methode zum Aktualisieren der Bestellung wurde aufgerufen).

Danke

2voto

monksy Punkte 13961

Verwenden Sie log4net, es ist die .NET-Version von Apache log4j. Die Bibliothek ist gut getestet, wird von Programmierern weltweit verwendet und ist sehr anpassungsfähig. Da Sie diesen Code geerbt haben, wäre es keine schlechte Idee, ihn durchzugehen und mit der Integration von Protokollierungsunterstützung zu beginnen.

Die Anpassungseinstellungen werden über eine globale Datei im Projekt abgewickelt, in der angegeben werden kann, wohin die Protokollierungsinformationen gehen (per E-Mail, Textdateien, Konsole) und welches Verboselevel pro Ausgabestelle der Protokollierungsinformationen benötigt wird.

1voto

Thomas Levesque Punkte 277723

Sie könnten ein AOP-Framework wie Postsharp verwenden, um ein spezifisches Attribut zur Protokollierung von Methodenaufrufen zu erstellen :

public class TraceAttribute : OnMethodBoundaryAspect 
{ 
  public override void OnEntry( MethodExecutionEventArgs eventArgs) 
  { Trace.TraceInformation("Betritt {0}.", eventArgs.Method);  } 

  public override void OnExit( MethodExecutionEventArgs eventArgs) 
  { Trace.TraceInformation("Verlässt {0}.", eventArgs.Method);   } 
}

(dieser Code ist das Beispiel von der Startseite)

Sie können dieses Attribut dann auf die Methoden anwenden, die Sie protokollieren möchten :

[Trace]
public void UpdateOrder()
{
    ...
}

0voto

John Punkte 15906

Hier ist etwas, wenn Sie in .NET sind:

http://www.codeproject.com/KB/dotnet/LoggerByHernandson.aspx

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X