AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Log-Klasse/Komponente mit TCP-Schnittstelle sinnvoll?
Thema durchsuchen
Ansicht
Themen-Optionen

Log-Klasse/Komponente mit TCP-Schnittstelle sinnvoll?

Ein Thema von s.h.a.r.k · begonnen am 23. Jan 2011 · letzter Beitrag vom 24. Jan 2011
Antwort Antwort
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

Log-Klasse/Komponente mit TCP-Schnittstelle sinnvoll?

  Alt 23. Jan 2011, 19:59
Ich habe den Threadtitel bewusst als Frage definiert, da ich hier eine Diskussion über folgende Idee starten will: ich habe in letzter Zeit mal meine Log-Komponente überarbeitet und über die möglichen Schnittstellen nachgedacht. Bisher hatte ich eine Klasse, die nach dem Singleton-Pattern gebaut war, also global verfügbar. Über eine Methode (entweder eine globale Methode oder eine Klassen-statische Methode) kann man einen Log schreiben. Diese verteilte diese Log-Message auf mehrere Module (erkläre ich gleich, was ich hierunter verstehe) und somit wird der Log "geschrieben".

Was ist nun ein Modul: ein Modul ist eine Klasse, die sich bei der Log-Komponente anmeldet und abmelden kann. Ein Modul kapselt ein bestimmtes Ziel, wie z.B. eine Datei. Ich habe bisher folgende Log-Module: Datei-Modul, ListBox-/Memo-/ListView-Modul, Datenbank-Modul. Somit ist es sehr einfach ein weiteres Modul, d.h. Ziel der Log-Messages, hinzuzufügen, ohne den Kern der Log-Komponente ändern zu müssen.

Nun hatte ich die Idee, die Schnittstelle zwischen der Kern-Log-Klasse und den Modulen via TCP(/IP) zu managen. Mir ist die erhöhte Komplexität (und die weitere Schicht) sehr wohl bewusst, würde aber auch gerne mal eure Meinung dies bzgl hören, ob es überhaupt sinnvoll sein kann. Natürlich wäre es hier auch gut zu wissen, wie und was ihr (im weitesten Sinne) loggt? Nutzt ihr das Loggen von Meldung nur zu Debug-Zwecken, oder auch für weitere Dinge? Evtl. auch für den User sichtbar (und nützlich)?

Warum mir diese Netzwerk-Schicht eingefallen ist:
  • Auf Basis eines geeigenten Protokolls kann man ohne Probleme Kern und Module unabhängig voneinander weiterentwickeln. (war bisher aber auch schon gegeben)
  • Server (Log-Kern) und Client (Module) können in unterschiedlichen Anwendungen und auch auf unterschiedlichen Rechnern liegen. Natürlich funktioniert die Kommunikation innerhalb der selben Anwendung.
  • Weiteführende Idee: Programmierer startet Log-Client auf seinem Rechner und verbindet sich mit entferntem Programm, um eine Problemanalyse zu starten. Nutzer klickt sich durch die Anwendung und Programmierer sieht auf seinem Screen die Log-Meldungen und somit evtl. das Problem. Es müssen keinerlei Log-Dateien mehr verschickt werden.
  • Man kann so auch einen einfachen Log-Server einrichten, der dann komplett unabhängig vom Programm und dem darunter liegenden Rechner ist.

Vielleicht ist die Idee ja auch nur bei den Haaren herbeigezogen, aber vielleicht kann sowas ja auch mal nützlich sein. Lasst mich mal wissen, was ihr so darüber denkt!
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#2

AW: Log-Klasse/Komponente mit TCP-Schnittstelle sinnvoll?

  Alt 23. Jan 2011, 20:44
Mir käme in den Sinn, den Sende-Netzwerkteil als Modul einzubinden und den Empfangs-Netzwerkteil mit der gleichen Möglichkeit Module einzubinden wie die Log-Komponente zu implementieren.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Log-Klasse/Komponente mit TCP-Schnittstelle sinnvoll?

  Alt 23. Jan 2011, 21:00
Es gibt schon ein Protokoll namens SysLog für diesen Zweck.
Also würde es Sinn machen, genau dieses Protokoll zu implementieren und auf der Empfangsseite einfach Open Source Software einzusetzen. (siehe http://www.msxfaq.de/tools/ntsyslog.htm)
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#4

AW: Log-Klasse/Komponente mit TCP-Schnittstelle sinnvoll?

  Alt 24. Jan 2011, 07:48
Ist Sinnvoll Und gibts auch schon. Die meisten Log-Komponenten (z.B. die von Raize Software) beherrschen das von Haus aus.
Allein wenn Du an einer Stelle Log-Ausgaben von mehreren Servern auf denen einen Anwendung läuft mit tracen willst macht es schon Sinn.

Ich würde mich da nur eher auf bereits existierende Implementierungen stützen bevor ich den schmarrn nochmal Nachimplementiere.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Log-Klasse/Komponente mit TCP-Schnittstelle sinnvoll?

  Alt 24. Jan 2011, 10:44
Kann mich da nur anschliessen - gängige Open Source Bibliotheken wie Log4Net, Log4J und Log4D bieten den TcpAppender, zum Beispiel damit man auch aus mehreren Instancen einer Anwendung (auf Terminalservern z.B.) problemlos auf das gleiche Log schreiben kann. Ein TcpLogServer sammelt und schreibt die Meldungen dann 'irgendwohin'. Mit einem einfachen FileAppender geht das nicht, sobald mehrere Anwendungen die gleiche Datei benutzen.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#6

AW: Log-Klasse/Komponente mit TCP-Schnittstelle sinnvoll?

  Alt 24. Jan 2011, 15:41
Mir käme in den Sinn, den Sende-Netzwerkteil als Modul einzubinden und den Empfangs-Netzwerkteil mit der gleichen Möglichkeit Module einzubinden wie die Log-Komponente zu implementieren.
Darauf wäre ich zunächst nicht gekommen, wäre aber dann wohl etwas flexibler und eben teilweise schlanker! Danke.

Ist Sinnvoll Und gibts auch schon. Die meisten Log-Komponenten (z.B. die von Raize Software) beherrschen das von Haus aus.
Allein wenn Du an einer Stelle Log-Ausgaben von mehreren Servern auf denen einen Anwendung läuft mit tracen willst macht es schon Sinn.

Ich würde mich da nur eher auf bereits existierende Implementierungen stützen bevor ich den schmarrn nochmal Nachimplementiere.
Das hatte ich mir schon fast gedacht. Nur wusste ich nicht, ob sowas wirklich sinnvoll sein kann bzw. aktiv genutzt wird. Aber wie es scheint, gibt es wahrlich für sowas Bedarf.

Muss mir dieses SysLog-Protokoll mal näher anschauen, ebenso andere Log-Komponenten.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  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 10:56 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