Einzelnen Beitrag anzeigen

mytbo

Registriert seit: 8. Jan 2007
461 Beiträge
 
#5

AW: Spring4D Logging

  Alt 13. Feb 2023, 21:31
Ich bin dies auch am evaluieren. Bevor ich da tiefer gehe: Ist für den FileAppender eine automatisch Rotation mit MaxFileSize eingebaut?
Wenn du am Logging interessiert bist, ist mORMot einen Blick wert. Die Hilfe vermittelt einen ersten Überblick. Ein Beispiel für die Anwendung:
Delphi-Quellcode:
program TestLogging;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  System.Classes,
  mormot.core.base,
  mormot.core.rtti,
  mormot.core.log,
  mormot.core.zip;

procedure Test1;
var
  log: ISynLog;
begin
  log := TSynLog.Enter;
  log.Log(sllInfo, 'Test1 arbeitet');
end;

procedure Test2;
var
  list: TStringList;
begin
  list := TStringList.Create;
  try
    TSynLog.Add.Log(sllInfo, 'Test2 arbeitet', list);
    list[0];
  finally
    list.Free;
  end;
end;

begin
  var logFamily: TSynLogFamily := TSynLog.Family;
  logFamily.Level := LOG_VERBOSE;
  logFamily.AutoFlushTimeOut := 2;
  logFamily.HighResolutionTimestamp := False;
  logFamily.PerThreadLog := ptNoThreadProcess;
  logFamily.ExceptionIgnore.Add(EConvertError);
  logFamily.OnArchive := EventArchiveZip;
  logFamily.ArchiveAfterDays := 1;

  try
    Test1;
    Test2;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Ein kleiner Auszug aus der Logdatei:
Code:
20230213 20391650  +    TestLogging Test1 (19)
20230213 20391651 info Test1 arbeitet
20230213 20391651  -    00.000.042
20230213 20391651 info System.Classes.TStringList(032688f0) Test2 arbeitet
20230213 20391651 EXC  EStringListError {Message:"Listenindex außerhalb des gültigen Bereichs (0)"} [Main] at 16a833 System.Classes.pas TStringList.Get (7644)
Die Funktion TSynLog.Enter protokolliert Unit-, Klassen- und Funktionsname mit Quelltext-Zeilennummer. Beim Verlassen der Funktion wird die Ausführungszeit ermittelt. Im Beispiel sind es 42us. Mit dem Aufruf Log kann ein Eintrag hinzugefügt werden. Bei Angabe einer Instanz wird der Unit- und Klassenname mit dem Instanz Pointer aufgeführt. Es stehen 32 vordefinierte Events zur Verfügung. Bei einer Exception wird die Fehlermeldung und der Aufrufpfad, mit allen Unit-, Klassen- und Funktionsname inklusive Zeilennummern aufgelistet. Ein Beispiel aus der Praxis findest du im Quelltext dieses DP Artikels.

Bis bald...
Thomas

Geändert von mytbo (13. Feb 2023 um 21:34 Uhr)
  Mit Zitat antworten Zitat