Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
4.094 Beiträge
 
Delphi 12 Athens
 
#12

AW: Optimales Logging: Assert-basiert oder NULL-Logger: Ja oder besser nicht ?

  Alt 18. Dez 2019, 10:27
Dankesehr für die Vorschläge und Kommentare.

@dummzeuch
Ja, genau das meine ich (Assert- oder Assertion-basiert, mir fehlt da der richtige Bezeichner).
Das mit Vor- Nachteil sehe ich ähnlich.
Es könnte da auch noch den Nachteil geben mit vorhandenen Asserts (in Library oder 3rd Party), das könnte dann womöglich mal in die Hose gehen.
Ich bin ja Mental auch eher bei einem NULL-Logger.

@freimatz
@Uwe Raabe
Ja das hatten wir schonmal so ähnlich, aber nicht als komplette Infrastruktur.
Inline und Interfaces können helfen, könnte eine lokale Gruppierung dann so aussehen ?
Delphi-Quellcode:
// Das könnte global in einem Log.Types Unit liegen, zur zenralen Steuerung, oder
// dort auch per ifdef's gesteuert
const
    CLog_Group_1 = 1; // per 0/1 individuell abschaltbar
    CLog_Group_2 = 0; // per 0/1 individuell abschaltbar
    CLog_Group_3 = 1; // per 0/1 individuell abschaltbar

procedure Main;
var
  T: TLog;
begin
  T.Init('TLogConsole');
  // Hierbei kann zwar Log weggeschalted werden ,aber nicht die Groups zentral verwaltet werden
  T.Log(CLog_Group_1, 'Hallo Welt');
  T.Log(CLog_Group_2, 'Hallo Welt');
  T.Log(CLog_Group_3, 'Hallo Welt');

  // So könnte es gehen, wenn die Groups im Log z.B. als class var verwaltet werden.
  T.LogGroup_Enable(CGroup1, CLog_Group_1);
  T.LogGroup_Enable(CGroup2, CLog_Group_2);
  T.LogGroup_Enable(CGroup3, CLog_Group_3);
  //
  T.LogGroup_1('Hallo Welt');
  T.LogGroup_2('Hallo Welt');
  T.LogGroup_3('Hallo Welt');
  // Nachteil: TLog müsste eine Menge über die Module wissen, damit könnte ich aber womöglich Leben
end;

Könnte interessant sein, muss ich mal checken.
@Stevie
Mit denen habe ich mich nur theoretisch beschäftigt, aber ich denke
CodeSite ist nicht FMX/Mobile: das wäre ein NoGo für mich.
Leider finde ich sehr wenig konkrete Daten darüber.

SmartBear dito
Zitat:
"TestComplete does not support applications built by using cross-platform GUI frameworks that render the application controls as graphic (for example, Embarcadero FireMonkey)."
Oder meintest Du etwas anderes als TestComplete für das einfach Logging ?

Wie genau machen die das denn im Code, ich vermute mal das es so eine Art "Sprungmarken" dort gibt, als Pointer zu den eigentlichen LogFunktionen.
Sorry, ich habe keines der Beiden installiert.
Oder könnte das etwa der gleiche Ansatz mit Interfaces sein, und je nach Anforderung auf NullInterfaces zeigen lassen ?

@Phillip Hoffman
Ja das wäre auch eine schöne Option, würde ich auch gerne unter Gruppierung sehen.
Ich denke dabei wird dan immer ExtraCode in den Units bleiben, aber gut für PreRelease Tests.
Ich mache sowas teilweise mit zuschaltbarem Logging, in einem speziellen Debug-Modus meiner Apps, die dann lokale Logs anzeigen können.
Damit kann ich sogar per Hotline mit den Kunden Einzelfälle besser debuggen.

@Medium
Im Prinzip ist MultiTread kein Problem (höchstens der zusätzliche Overhead und Performaceverlust).
Nur die Anzeige der Logs muss im UI-Thread, oder noch besser extern erfolgen.
Schau dir mal ein Android Logcat von einem Phone an, das sended andauernd zig Logs, auch wenn im Frontend gar nichts passiert, da kommt Einiges aus Threads.
  Mit Zitat antworten Zitat