Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Spring4D Logging (https://www.delphipraxis.net/209805-spring4d-logging.html)

mytbo 15. Feb 2023 17:53

AW: Spring4D Logging
 
Zitat:

Zitat von taveuni (Beitrag 1518713)
Eine kleine Frage: Ich habe mich gewundert dass die Datei erst beim beenden geschrieben wird obwohl ich AutoFlushTimeOut gesetzt habe.

Bist du sicher, dass da nichts geschrieben wird? Auch wenn der Explorer 0 Bytes anzeigt, werden die Einträge nach Ablauf der AutoFlushTimeOut Zeit in die Datei geschrieben. Ansonsten erzwingt die Funktion Flush(True) das sofortige Schreiben. Für dich könnten die Echo Funktionen von Interesse sein. Du kannst eine eigene Callback für EchoCustom, oder mit dem ISynLogCallback Interface dein eigenes Remote-Logging schreiben und mit EchoRemoteStart starten. In den DDD Tools von mORMot1 findest du ein Beispiel für WebSockets.

Bis bald...
Thomas

taveuni 16. Feb 2023 07:27

AW: Spring4D Logging
 
Zitat:

Zitat von mytbo (Beitrag 1518729)
Bist du sicher, dass da nichts geschrieben wird? Auch wenn der Explorer 0 Bytes anzeigt, werden die Einträge nach Ablauf der AutoFlushTimeOut Zeit in die Datei geschrieben.

Ja. Weil wie Du in der Funktion siehst ist der DebugHook = 1. Somit ist die Bedingung nicht erfüllt und der Autoflushthread wird nicht gestartet. Aber klar ich kann das auch manuell machen im Programm wenn $DEBUG defined ist.
Danke

Übrigens sorry dem Threadersteller für das kapern dieses Threads. Eigentlich gings ja um Spring4D...
Gruss Werner

mytbo 16. Feb 2023 22:44

AW: Spring4D Logging
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von taveuni (Beitrag 1518742)
Aber klar ich kann das auch manuell machen im Programm wenn $DEBUG defined ist.

Vielleicht habe ich es nicht verständlich erklärt: Du kannst dein eigenes Remote-Logging schreiben, oder das Programm Synopse LogView aus dem mORMot1 SQLite3\Samples\11 - Exception logging nehmen. Der Quelltext ist noch nicht nach mORMot2 portiert. Du musst mORMot1 installieren und es erstellen. Mit dem Button Server Launch startest du den Server, der auf den konfigurierbaren Port lauscht. Am einfachsten schreibst du dir eine Unit wie folgt:
Delphi-Quellcode:
unit u_RemoteLogging;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.UITypes, System.Classes,
  mormot.core.base,
  mormot.core.text,
  mormot.core.rtti,
  mormot.core.log;

type
  TRemoteLogging = class(TComponent)
  strict private
    FLogClass: TSynLogClass;
  protected
    const
      DEFAULT_PORT = 8091;
  public
    destructor Destroy; override;
    procedure Start(pmLogClass: TSynLogClass; const pmcUri: RawUtf8 = '127.0.0.1/LogService');
  end;

implementation

uses
  mormot.net.sock,
  mormot.rest.http.client;

//==============================================================================
// TRemoteLogging
//==============================================================================

destructor TRemoteLogging.Destroy;
begin
  if FLogClass <> Nil then
    FLogClass.Family.EchoRemoteStop;

  inherited Destroy;
end;

procedure TRemoteLogging.Start(pmLogClass: TSynLogClass; const pmcUri: RawUtf8);
var
  uri: TUri;
begin
  if pmLogClass <> Nil then
  try
    FLogClass := pmLogClass;
    uri.From(pmcUri, Int32ToUtf8(DEFAULT_PORT));
    TRestHttpsClient.CreateForRemoteLogging(uri.Server, pmLogClass, Utf8ToInteger(uri.Port), uri.Root);
  except
    on E: Exception do
      pmLogClass.Add.Log(sllError, E);
  end;
end;

end.
Durch diesen Aufruf
Delphi-Quellcode:
TRemoteLogging.Create(Self).Start(TSynLog);
bindest du sie ins Programm ein und kannst danach den Einträgen im LogView folgen.

PS: Für dein Programm verwendest du mORMot2. Nur zur Erstellung des Programms Synopse LogView benötigst du zur Zeit noch mORMot1.

Bis bald...
Thomas


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 Uhr.
Seite 2 von 2     12   

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-2025 by Thomas Breitkreuz