AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Vernünftiges loggen

Ein Thema von Mr_G · begonnen am 14. Jun 2009 · letzter Beitrag vom 15. Jun 2009
Antwort Antwort
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#1

Vernünftiges loggen

  Alt 14. Jun 2009, 14:57
Hallo zusammen,
ich wollte mal fragen wie man ein vernünftiges Logging in seiner Anwendung veranstaltet. Ich habe z.B. mehrere Klassen mit denen ich verschiedene Zugriffe etc. manage. Natürlich ist auch eine Klasse fürs loggen dabei
Mir stellt sich nun die Frage ob ich die verschiedenen Klassen nun so gestalte, dass ihnen die Instanz der Logging-Klasse bei der Erzeugung übergeben wird oder ob ich mit diversen Exceptions arbeiten soll und diese dann im Hauptteil abfangen und loggen sollte.
Wie stellt man das möglichst geschickt an?
Jan
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Vernünftiges loggen

  Alt 14. Jun 2009, 15:29
Ich weis nicht, ob das jetzt die beste Lösung oder so ist, aber in meinem FTP-Programm hab ich auch ein Log schreiben lassen.

Da hat jede Klasse (okay, es war nur eine) ein Log-Event angeboten, die was zu sagen hatte. In dem Eventhandler kann dann die Nachricht z.B. in eine datei oder in ein Richedit geschrieben werden.

In deinem Fall würde also die Logging-Klasse Eventhandler bereitstellen, die mit den verschiedenen Klassen verknüft sind.

Vorteil: Man kann das Event behalndeln oder auch nicht, man muss der Klasse im Konstruktor keine Logging-Klasse übergeben. (Und die Klasse braucht nichts über die Logging-Klasse zu wissen)

Ist aber nur so ne Idee
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Vernünftiges loggen

  Alt 14. Jun 2009, 16:20
Die Idee finde ich spitze!
Weitere Erfahrungen und Ideen?
Jan
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Vernünftiges loggen

  Alt 14. Jun 2009, 16:27
Ich habe das meistens via Singleton-Pattern gelöst, so dass ich auf ein globales Log-Objekt zugreifen konnte.
Vorteil: Ich muss nichts ändern um Logausgaben hinzuzufügen außer den Ausgaben selbst.
Nachteil: Die Unit muss überall in die uses.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Vernünftiges loggen

  Alt 14. Jun 2009, 16:43
Bei Events ist natürlich der Vorteil, das eben diese Log-Klasse nicht bekannt sein muss. Und es muss nicht geloggt werden, kann aber.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Vernünftiges loggen

  Alt 14. Jun 2009, 20:11
Was ist denn zu dem Ansatz zu sagen mit Exceptions um sich zu werfen und diese dann zentral auszuwerten?
Jan
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Vernünftiges loggen

  Alt 14. Jun 2009, 20:21
Zitat von Mr_G:
Was ist denn zu dem Ansatz zu sagen mit Exceptions um sich zu werfen und diese dann zentral auszuwerten?
Exceptions sind, wie der Name schon sagt, Ausnahmen und damit würde ich kein Logging betreiben.

Ich persönlich nutze die gleiche Methode wie Sebastian, fahre mit dem auch ganz gut.
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Vernünftiges loggen

  Alt 14. Jun 2009, 20:37
Prinzipiell tendiere ich eher zu der Event-Lösung. Das hört sich in meinen Ohren sehr elegant an.
@Die Muhkuh: Es dreht sich ja schon um Fehler und nicht um Statusmeldungen die geloggt werden sollen.
Jan
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Vernünftiges loggen

  Alt 14. Jun 2009, 20:54
Zitat von Mr_G:
Prinzipiell tendiere ich eher zu der Event-Lösung. Das hört sich in meinen Ohren sehr elegant an.
Solange man den damit verbundenen Aufwand nicht scheut ist das sicher eine gute objektorientierte Lösung.

Ich wäre dafür schlicht zu "faul", denn ich habe in einem Projekt meistens so viele Klassen, dass das ein erheblicher Aufwand wäre. (Weil ich meistens so weit wie möglich (und sinnvoll) modularisiere.)
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
moonwhaler

Registriert seit: 22. Dez 2005
57 Beiträge
 
Delphi 5 Enterprise
 
#10

Re: Vernünftiges loggen

  Alt 15. Jun 2009, 14:34
Unter Java nutze ich Log4J, welches ich auch als globales Objekt anspreche (eben erwähntes Singleton).

Unter Delphi verwende ich jedoch Events, die von der zu "loggenden" Klasse geschmissen werden. Das macht das etwas eleganter und vor allem MUSS ich nicht loggen, kann aber die Events trotzdem auswerten und sogar noch ganz andere Sachen damit treiben.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz