Einzelnen Beitrag anzeigen

Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#1

Indy und seine Log-Funktionalitäten

  Alt 1. Jun 2004, 12:59
Hi Leute,

eigentlich kenne ich mich ja mittlerweile mit den Indy-Komponenten sehr gut aus, aber bisher habe ich das Logging im selber mit einen eigenen Logfile-KLasse, die in einem seperaten Thread arbeitet, realisiert.
Da ich jetzt aber gerade eine Cross-Platform Anwendung schreiben will(Windoof/Linux), kann ich meine bisherige Logfile-KLasse nicht benutzen weil :
Code:
procedure TJFThreadLogFile.Execute;
Var iCount : Longint;
      bExit : Boolean;
      HandleArray : Array of THandle;
      wRes  : Word;
      iLoop : Byte;
begin
   bExit := false;
   setLength(HandleArray,2);
   HandleArray[0] := hLogEvent;
   HandleArray[1] := hCloseEvent;
   repeat
      wRes := MsgWaitForMultipleObjects(2,PDWord(HandleArray)^,false,INFINITE,QS_ALLINPUT);
      case wRes of
         WAIT_OBJECT_0 + 0 : //Log Event
            begin
               iLoop := 1;
               iCount := getBufferCount;
               While (iCount > 0) and (iLoop <= 3) do begin
                  doLog;
                  iCount := getBufferCount;
                  if iCount > 0 then
                     inc(iLoop);
               end;
            end;
         WAIT_OBJECT_0 + 1 : // Close Event
            bExit := true;
      end;
   until bExit;
   SetLength(HandleArray,0);   
end;
Wie Ihr seht benutze ich die Windows-API und kann meine Klasse geswegen knicken.

Fragen:

1. Hat jemand ne Idee, wie man das ganze Cross-Plattformfähig machen könnte ?
(mit Sleep ist doch total unperformant, oder ?)

2. Wer hat sich schon mit den Indy-Logging-Komponenten(IdLogEvent, IdLogfile u. IdLogStream) beschäftigt und kann mit sagen, wie das vernüftig funktioniert ? Bisher habe ich nur im Indy-FTP-Demp die Verwendung von IdLogEvent gefunden, bekomme aber selbst das Bsp. nicht so umgebogen das in eine DAtei geschrieben wird.

3. Oder ist es am besten ohne Logfile-Klasse(seperater THread), sondern die eigene Logfile-FUnktion einfach syncronisiert aufzurufen ?
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat