AGB  ·  Datenschutz  ·  Impressum  







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

Programmablauf Protokollieren

Ein Thema von martin_ · begonnen am 17. Jun 2011 · letzter Beitrag vom 20. Jun 2011
Antwort Antwort
Seite 1 von 2  1 2      
martin_

Registriert seit: 19. Mai 2008
Ort: Österreich
89 Beiträge
 
#1

Programmablauf Protokollieren

  Alt 17. Jun 2011, 10:29
Hallo,
bin auf der Suche nach einer Möglichkeit den Ablauf meines Programms zu Protokollieren. Dh. bestimmte Zugriffe auf Objekte, Rückgabewerte und Zustände die kritisch sind.
Gibt es hierfür eine fertige Lösung die einfach zu integrieren ist?
Danke
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Programmablauf Protokollieren

  Alt 17. Jun 2011, 11:08
Welche Delphi-Version hast Du denn?

Im XE sind CodeSite und AQTime enthalten. Damit kann man komfortabel Informationen ausgeben und Zeitanalysen durchführen.

Als Billiglösung kannst Du Infos in ein Memo oder Textdatei schreiben.
Ich könnte bei Bedarf eine alte Unit raussuchen, in der ich so etwas in Funktionen verpackt habe.

Ganz einfach ist auch folgende temporäre Lösung für kurze Infos:
Application.MainForm.Caption := 'Kurzinfo' + ' ' + Application.MainForm.Caption;

Und zur Designzeit natürlich auch OutputDebugString...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Programmablauf Protokollieren

  Alt 17. Jun 2011, 11:08
Callbacks? Mit Compilerdirektiven eingesetztes Logging?
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Programmablauf Protokollieren

  Alt 17. Jun 2011, 11:35
Ich hab ne Weile SmartInspect probiert. Wenn Geld keine Rolle spielt(TM) ist das eine schnell zu implementierende und sehr komfortable Möglichkeit.

Letztendlich habe ich das aber erst in eigener Unit gekapselt (300 $ sind ja kein Pappenstiel), und dann ersetzt durch diverse eigene Möglichkeiten (Logfile, OutputDebugString, AllocConsole + WriteLn, etc.). Gerade OutputDebugString ist für die Arbeit im Debugger schön einfach.

Wichtig: wie Aphton schon schrieb, am besten mit Direktiven, um im kompilierten Release keine Laufzeiteinbußen dadurch zu haben.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#5

AW: Programmablauf Protokollieren

  Alt 17. Jun 2011, 23:47
wie wäre es mit log4delphi?

http://log4delphi.sourceforge.net/index.html

Das gibt es auch für andere Sprachen:

log4net
log4java
log4php
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Programmablauf Protokollieren

  Alt 18. Jun 2011, 02:13
Mit Compilerdirektiven eingesetztes Logging?
Wichtig: wie Aphton schon schrieb, am besten mit Direktiven, um im kompilierten Release keine Laufzeiteinbußen dadurch zu haben.
Absolut falsch. Auch in einem Release build sollte Logging enthalten sein. Es sollte nur möglicherweise standardmäßig deaktiviert sein. Aber wenn irgendwo im laufenden Betrieb ein Fehler entsteht, kann man wohl in den seltensten Fällen mal ebend nen Debug Build an den Kunden geben um irgendwas zu protokollieren.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Programmablauf Protokollieren

  Alt 20. Jun 2011, 15:17
Absolut falsch.
Absolut? Das ist aber eine ziemlich absolute Meinung.

Ein möglichst umfassendes Logging klappt zum Beispiel nur mit Kompilaten, die Debug-Informationen beinhalten. Dann kompiliert man ein Logging-Build natürlich auch nicht mit Runtime Packages. Und schon lieferst Du auf einmal die fünffache Datenmenge aus. Das kannst Du vielleicht für Individualsoftware machen, aber nicht für die breite Masse.

Außerdem steht da wieder die Performance-Frage. Wenn Du bis ins feinste Detail präpariest, also jeder einzelnen Methode/Funktion/Prozedur Enter- und Leave-Aufrufe hinzufügst, ist der Performance-Einbruch dadurch nicht mehr hinnehmbar, sobald es um irgend welche rechenintensiven Geschichten geht. Selbst wenn das logging komplett inline sein sollte, bedeutet "standardmäßig deaktiviert" immer noch etliche Abfragen.

Nichts gegen eine ordentliche Fehlerbehandlung im Public Release, die ist im Gegenteil extrem wichtig, aber das komplette Logging gehört da - mMn nach - auf keinen Fall rein. Zumindest nicht so "absolut", wie Du es darstellt.
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#8

AW: Programmablauf Protokollieren

  Alt 20. Jun 2011, 15:23
Ohne Logfiles ist man immer darauf angewiesen einen Fehler reproduzieren zu können. Das funktioniert aber eigentlich nur, wenn die einzigen Beteiligten der Nutzer und Software sind. In dem Fall braucht man eigentlich nur Abweichungen von der Norm zu protokollieren.

Wer schon mal ein Projekt in der Automatisierungstechnik gehabt hat, weiß das Reproduzieren da schwierig bis unmöglich ist. Besonders wenn sämtliche Komponenten neu sind, schiebt sich da jeder gerne gegenseitig die Schuld zu. Hat man da ein Logfile, das sauber protokolliert, dass für die angelegten Eingangssignale / Barcodes / Config-Dateien / Serverrückgaben die richtigen Ausgangssignale gesetzt wurden, kann man sich zurücklehnen. Ansonsten ist erst mal immer die Software schuld.
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#9

AW: Programmablauf Protokollieren

  Alt 20. Jun 2011, 15:34
Absolut falsch.
Absolut? Das ist aber eine ziemlich absolute Meinung.

Ein möglichst umfassendes Logging klappt zum Beispiel nur mit Kompilaten, die Debug-Informationen beinhalten. Dann kompiliert man ein Logging-Build natürlich auch nicht mit Runtime Packages. Und schon lieferst Du auf einmal die fünffache Datenmenge aus. Das kannst Du vielleicht für Individualsoftware machen, aber nicht für die breite Masse.

Außerdem steht da wieder die Performance-Frage. Wenn Du bis ins feinste Detail präpariest, also jeder einzelnen Methode/Funktion/Prozedur Enter- und Leave-Aufrufe hinzufügst, ist der Performance-Einbruch dadurch nicht mehr hinnehmbar, sobald es um irgend welche rechenintensiven Geschichten geht. Selbst wenn das logging komplett inline sein sollte, bedeutet "standardmäßig deaktiviert" immer noch etliche Abfragen.

Nichts gegen eine ordentliche Fehlerbehandlung im Public Release, die ist im Gegenteil extrem wichtig, aber das komplette Logging gehört da - mMn nach - auf keinen Fall rein. Zumindest nicht so "absolut", wie Du es darstellt.
Bin da absolut deiner Meinung
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Programmablauf Protokollieren

  Alt 20. Jun 2011, 16:42
Ein möglichst umfassendes Logging klappt zum Beispiel nur mit Kompilaten, die Debug-Informationen beinhalten.
Warum? Es reicht doch, wenn ggf. die Adresse geloggt werden, sofern zu jeder ausgelieferten Version auch die Map-Files und externen Debuginformationen existieren.

Außerdem steht da wieder die Performance-Frage. [...] Selbst wenn das logging komplett inline sein sollte, bedeutet "standardmäßig deaktiviert" immer noch etliche Abfragen.
Naja, so viel ist das auch wieder nicht.
Delphi-Quellcode:
if Assigned(MyLogFunction) then
...
Das sollte nicht viele Zyklen brauchen.

Es ist eher die Frage was geloggt wird. Und welche Informationen davon für den laufenden Betrieb relevant sind, wenn es zu einem Fehler kommt. Das Loggen an sich sollte in nahezu allen Fällen von der Rechnerzeit her kaum relevant sein, wenn man es auf diese Weise einbaut und deaktiviert hat.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:51 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