Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Webservice Kommunikation loggen (https://www.delphipraxis.net/191357-webservice-kommunikation-loggen.html)

QuickAndDirty 6. Jan 2017 12:15

Webservice Kommunikation loggen
 
Hallo,
in welchem Event welcher Komponente kann ich die Soaprequests und die Responses loggen?
Es ist vermutlich super offensichtlich...aber ich finde es nicht.
TidHTTPWebBrokerBridge ist undokumentiert aber ich brauche wohl sowieso ein Event aus dem "TIdCustomHTTPServer" denke ich mal.

mjustin 6. Jan 2017 12:24

AW: Webservice Kommunikation loggen
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1358226)
Hallo,
in welchem Event welcher Komponente kann ich die Soaprequests und die Responses loggen?
Es ist vermutlich super offensichtlich...aber ich finde es nicht.
TidHTTPWebBrokerBridge ist undokumentiert aber ich brauche wohl sowieso ein Event aus dem "TIdCustomHTTPServer" denke ich mal.

Man kann dem IdHTTPCustomServer eine Indy Intercept Instanz zuweisen, die dann dass Loggen erledigt. Ich kenne aber die Details der TidHTTPWebBrokerBridge nicht, kann also nicht sagen wo und wie man an den TIdCustomHTTPServer kommt.

Sourcebeispiel:

Intercept := TIdServerInterceptLogFile.Create(nil);
Intercept.Filename := 'httpIntercept.log';
HTTPServer.Intercept := Intercept;

(gefunden in https://www.habarisoft.com/daraja_fr...ingStarted.pdf)

Mavarik 6. Jan 2017 12:31

AW: Webservice Kommunikation loggen
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1358226)
Hallo,
in welchem Event welcher Komponente kann ich die Soaprequests und die Responses loggen?

Event?

Für jeden WebService hast Du doch eine Procedure bzw. Funktion geschrieben... Da kannst Du doch an jeder beliebigen Stelle loggen?

Oder Verstehe ich die Frage nicht...:stupid:

QuickAndDirty 6. Jan 2017 12:35

AW: Webservice Kommunikation loggen
 
Zitat:

Zitat von Mavarik (Beitrag 1358230)
Zitat:

Zitat von QuickAndDirty (Beitrag 1358226)
Hallo,
in welchem Event welcher Komponente kann ich die Soaprequests und die Responses loggen?

Event?

Für jeden WebService hast Du doch eine Procedure bzw. Funktion geschrieben... Da kannst Du doch an jeder beliebigen Stelle loggen?

Oder Verstehe ich die Frage nicht...:stupid:

Ich will mir das sparen. Will alle zukünftigen und aktuelle Fliegen mit einer klappe erschlagen.
Es gibt ja sicher eine zentrale stelle wo der Datenverkehr verarbeitet wird.

QuickAndDirty 6. Jan 2017 12:35

AW: Webservice Kommunikation loggen
 
Zitat:

Zitat von mjustin (Beitrag 1358229)
Zitat:

Zitat von QuickAndDirty (Beitrag 1358226)
Hallo,
in welchem Event welcher Komponente kann ich die Soaprequests und die Responses loggen?
Es ist vermutlich super offensichtlich...aber ich finde es nicht.
TidHTTPWebBrokerBridge ist undokumentiert aber ich brauche wohl sowieso ein Event aus dem "TIdCustomHTTPServer" denke ich mal.

Man kann dem IdHTTPCustomServer eine Indy Intercept Instanz zuweisen, die dann dass Loggen erledigt. Ich kenne aber die Details der TidHTTPWebBrokerBridge nicht, kann also nicht sagen wo und wie man an den TIdCustomHTTPServer kommt.

Sourcebeispiel:

Intercept := TIdServerInterceptLogFile.Create(nil);
Intercept.Filename := 'httpIntercept.log';
HTTPServer.Intercept := Intercept;

(gefunden in https://www.habarisoft.com/daraja_fr...ingStarted.pdf)

Ich gucke es mir an.

nahpets 6. Jan 2017 12:43

AW: Webservice Kommunikation loggen
 
In meinem Webserver mit der Komponente TIdHTTPServer nutze ich die Ereignisse OnCommandGet und OnCommandOther u. a. zum Loggen der Anfragen an den Server.

Ausgehend von den Quelltexten müsste TidHTTPWebBrokerBridge ein Nachfahre von TIdCustomHTTPServer sein. Und die beiden Ereignisse sind dort vorhanden und auch published, müssten von daher eigentlich nutzbar sein.

mjustin 6. Jan 2017 12:48

AW: Webservice Kommunikation loggen
 
Zitat:

Zitat von nahpets (Beitrag 1358234)
In meinem Webserver mit der Komponente TIdHTTPServer nutze ich die Ereignisse OnCommandGet und OnCommandOther u. a. zum Loggen der Anfragen an den Server.

Ausgehend von den Quelltexten müsste TidHTTPWebBrokerBridge ein Nachfahre von TIdCustomHTTPServer sein. Und die beiden Ereignisse sind dort vorhanden und auch published, müssten von daher eigentlich nutzbar sein.


TidHTTPWebBrokerBridge nutzt diese Ereignisse sehr wahrscheinlich bereits, weist ihnen eigene Handler zu. Damit wären sie nicht mehr für eigenes Logging nutzbar.

nahpets 6. Jan 2017 13:02

AW: Webservice Kommunikation loggen
 
Man müsste halt prüfen, ob dem OnCommandGet von TidHTTPWebBrokerBridge schon was zugewiesen ist.

Könnte sowas nicht eventuell funktionieren?
Delphi-Quellcode:
...
 FSaveOnCommandGet: TIdHTTPCommandEvent;
...

// an geeigneter Stelle vor dem Aktivieren ...
 FSaveOnCommandGet := MyWebBrokerBridge.OnCommandGet;

procedure TMyWebBrokerBridge.CommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
  // und hier dann loggen?
  if Assigned(FSaveOnCommandGet) then begin
    FSaveOnCommandGet(AContext, ARequestInfo, AResponseInfo);
  end;
  // oder hier dann loggen?
end;

Mavarik 6. Jan 2017 13:31

AW: Webservice Kommunikation loggen
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1358231)
Ich will mir das sparen. Will alle zukünftigen und aktuelle Fliegen mit einer klappe erschlagen.
Es gibt ja sicher eine zentrale stelle wo der Datenverkehr verarbeitet wird.

Ahh ok... Native Daten zu loggen - macht für mich keinen Sinn. Ist wegen dem XML overhead auch viel zu viel.

Deswegen logge ich immer das, was ich auch brauche... Besonders weil das je nach Webservice auch unterschiedliche Daten sind. (Da eine ISAPI.DLL ja i.d.R. mehrere Funktionalitäten bietet)

Grüsse


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz