ich bin gerade dabei, mir eine Log-Klasse zu schreiben; die Log-Einträge werden in einer LogQueue: TList gespeichert und dann bei Bedarf auf ein (bzw. gerade zwei) LogDevices ausgegeben. Diese LogDevices können ein extra Fenster, ein Memo, eine Text-Datei oder ... sein (Memo und Text-Datei sind rudimentär implementiert und werden probiert).
Momentan (s.u.) habe ich einfach 2 Devices definiert und agieren parallel - das ist sehr unelegant. Mir schwebt eigentlich eine Liste von Devices vor, auf die dann die Log-Messages ausgegeben werden können (alle wichtigen Meldungen auf dem Memo; alles gleichzeitig in's File). Es gibt eine Basisklasse TLogDevices von der ich die konkreten LogDevices ableite (z.b. TLogDeviceMemo, TDeviceFile).
Hier die Logger-Klasse:
Code: Alles auswählen
TNewLogger = class
private
LogQueue: TList;
FNoLogEntries: integer;
FLastDisplayed: integer;
FLogDevicesList: TList; // soll die beiden unten ersetzen
FLogDevice: TLogDevice; // wohin das alles ausgeben?
FLogDevice2: TLogDevice; // 2. zum Testen
procedure SetLogDevice(aLogDevice: TLogDevice);
procedure SetLogDevice2(aLogDevice: TLogDevice);
public
property NoLogEntries: integer read FNoLogEntries;
property LastDisplayed: integer read FLastDisplayed;
property LogDevice: TLogDevice read FLogDevice write SetLogDevice;
property LogDevice2: TLogDevice read FLogDevice2 write SetLogDevice2;
constructor Create;
procedure LogMessage(aLogLevel: TLogLevel; aLogText: string);
procedure DisplayLogMessages;
end;
Ciao,
Photor