2 Stimmen

Welche Logging-Implementierung bevorzugen Sie?

Ich bin dabei, eine Logging-Klasse in C++ zu implementieren und versuche zu entscheiden, wie ich es machen soll. Ich bin neugierig zu wissen, welche Art von verschiedenen Logging-Implementierungen es da draußen gibt.

Ich habe zum Beispiel die Protokollierung mit "Levels" in Python verwendet. Dabei werden Protokollereignisse herausgefiltert, die unter einem bestimmten Schwellenwert liegen. Dazu gehören auch Protokollierungs-"Namen", bei denen Sie Ereignisse über eine Hierarchie herausfiltern können, z. B. wird "app.apples.*" nicht angezeigt, "app.bananas.*" aber schon.

Ich habe über die Verwendung von "Tags" nachgedacht, bin mir aber über die Umsetzung unsicher. Ich habe gesehen, dass Spiele "Bits" für mehr Kompaktheit verwenden.

Daher meine Fragen:

  • Welche Implementierungen haben Sie bereits erstellt oder verwendet?
  • Welche Vor- und Nachteile haben sie Ihrer Meinung nach?

0 Stimmen

Nach welcher Art von Protokollierung suchen Sie wirklich? Auf welchem System? Wollen Sie spezifische Protokolle für Ihre Anwendung? Wollen Sie sie im Syslog speichern?

0 Stimmen

Es handelt sich eher um eine allgemeine Frage. Gehen Sie einfach von der Standardausgabe oder der Dateiausgabe für eine Anwendung aus.

3voto

Filip Ekberg Punkte 35716

Ich würde lesen diese Stelle von Jeff Atwood

Es geht um den Überlauf von Logging und wie man ihn vermeiden kann.

1voto

Doug Currie Punkte 39584

Es gibt viele Links auf der Log4J wikipedia-Seite.

1voto

Dan Herbert Punkte 94074

Jeff Atwood hatte einen sehr interessanter Blog Eintrag über die Protokollierung. Die eigentliche Botschaft war, dass die Protokollierung im Allgemeinen (bis zu einem gewissen Grad) unnötig ist.

Die Protokollierung ist im Allgemeinen nicht gut skalierbar (zu viele Daten auf Systemen mit hohem Datenverkehr).

Ich denke, das Beste daran ist, dass man es im Allgemeinen nicht braucht. Es ist einfacher, den Code von Hand zu durchsuchen, um zu verstehen, welche Werte den Dingen zugewiesen werden, als viele Protokolldateien zu durchforsten.

Es ist einfach eine Informationsflut.

Das gilt jedoch nicht für Einzelplatzanwendungen. Für Dinge wie die Medienverschlüsselung oder die allgemeine Nutzung des Betriebssystems kann ein Protokoll für kleine Anwendungen nützlich sein, da Debug-Informationen ist nützlich (für mich) in dieser Situation. Wenn Sie eine DVD brennen und etwas schief geht, kann ein Blick auf die Protokollinformationen bei der Fehlersuche sehr hilfreich sein, wenn Sie die Protokollausgabe verstehen.

Ich denke, dass es für den Benutzer hilfreich wäre, wenn es ein paar Stufen gäbe, wie z.B.:

  • Keine Protokolle
  • Basisprotokollierung für allgemeines Benutzerfeedback
  • Hochtechnische Daten, die ein Entwickler oder eine Person des technischen Supports interpretieren muss

Je nach Situation kann es sinnvoll sein, ALLE Protokolldaten zu speichern und dem Benutzer nur die grundlegenden Informationen anzuzeigen oder ihm die Möglichkeit zu geben, alle detaillierten Daten zu sehen.

Es hängt alles von der Domäne ab.

1voto

cookre Punkte 707

Eine unserer Anwendungen verwendet Registrierungseinträge zur dynamischen Steuerung der Protokollierung/Verfolgung während der Produktionsausführung.

Zum Beispiel: if (Logger.TraceOptionIsEnabled(TraceOption.PLCF_ShowConfig)) {...whatever

Wird der Aufruf zur Laufzeit ausgeführt, wenn der Registrierungswert PLCF_ShowConfig true ist, kehrt der Aufruf zu true zurück, und was auch immer ausgeführt wird.

Ziemlich praktisch.

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