Ich arbeite an einem Projekt in Delphi und erstelle ein Installationsprogramm für die Anwendung. Es gibt drei Hauptteile.
- PostgreSQL Installation / Deinstallation
- myapplication (Setup von myapplication wird mit nsi erstellt) Installation / Deinstallation.
- Erstellen von Tabellen in Postgres über ein Skript (Batch-Dateien).
Alles läuft gut und reibungslos, aber wenn etwas fehlschlägt, habe ich einen LogToFileger erstellt, der jeden Schritt des Prozesses
wie folgt protokolliert
LogToFileToFile.LogToFile('[DatabaseInstallation] : [ACTION]:Postgres installation started');
Die Funktion LogToFileToFile.LogToFile()
Hiermit wird der Inhalt in eine Datei geschrieben. Dies funktioniert gut, aber das Problem ist, dass dies den Code durcheinander gebracht hat, da es schwierig geworden ist, den Code zu lesen , da man den LogToFileToFile.LogToFile()
Funktionsaufruf nur überall im Code sehen kann
ein Beispiel
if Not FileExists(SystemDrive+'\FileName.txt') then
begin
if CopyFile(PChar(FilePathBase+'FileName.txt'), PChar(SystemDrive+'\FileName.txt'), False) then
LogToFileToFile.LogToFile('[DatabaseInstallation] : copying FileName.txt to '+SystemDrive+'\ done')
else
LogToFileToFile.LogToFile('[DatabaseInstallation] : copying FileName.txt to '+SystemDrive+'\ Failed');
end;
if Not FileExists(SystemDrive+'\SecondFileName.txt') then
begin
if CopyFile(PChar(FilePathBase+'SecondFileName.txt'), PChar('c:\SecondFileName.txt'), False) then
LogToFileToFile.LogToFile('[DatabaseInstallation] : copying SecondFileName.txt to '+SystemDrive+'\ done')
else
LogToFileToFile.LogToFile('[DatabaseInstallation] : copying SecondFileName.txt to '+SystemDrive+'\ Failed');
end;
Wie Sie sehen, gibt es viele LogToFileToFile.LogToFile()
Anrufe,
bevor es war
if Not FileExists(SystemDrive+'\FileName.txt') then
CopyFile(PChar(FilePathBase+'FileName.txt'), PChar(SystemDrive+'\FileName.txt'), False)
if Not FileExists(SystemDrive+'\SecondFileName.txt') then
CopyFile(PChar(FilePathBase+'SecondFileName.txt'), PChar('c:\SecondFileName.txt'), False)
Dies ist jetzt in meinem gesamten Code der Fall.
es ist schwer zu lesen.
Kann mir jemand einen guten Weg vorschlagen, um die Aufrufe von LogToFile übersichtlich zu gestalten?
mögen
Einrücken des Aufrufs 'LogToFileToFile.LogToFile ()'
wie folgtif Not FileExists(SystemDrive+'\FileName.txt') then begin if CopyFile(PChar(FilePathBase+'FileName.txt'), PChar(SystemDrive+'\FileName.txt'), False) then {Far away--->>} LogToFileToFile.LogToFile(2,'[DatabaseInstallation] : [ACTION]:copying FileName.txt to '+SystemDrive+'\ sucessful') else {Far away--->>} LogToFileToFile.LogToFile(2,'[DatabaseInstallation] : [ACTION]:copying FileName.txt to '+SystemDrive+'\ Failed'); end;
Separate Einheit wie
LogToFileger
Diese Einheit enthält alle LogToFile-Nachrichten in einerswitch case
ähnlichen FormFunction LogToFilegingMyMessage(LogToFilegMessage : integer) begin case LogToFilegMessage of 1 : LogToFileToFile.LogToFile(2,'[DatabaseInstallation] : [ACTION]:copying FileName.txt to '+SystemDrive+'\ sucessful'); 2 : LogToFileToFile.LogToFile(2,'[DatabaseInstallation] : [ACTION]:copying FileName.txt to '+SystemDrive+'\ Failed'); 150 : LogToFileToFile.LogToFile(2,'[somthing] : [ACTION]: somthing important); end;
Daher kann ich einfach die LogToFilegingMyMessage (1) aufrufen, wo immer dies erforderlich ist.
Kann mir jemand sagen, welcher Ansatz für LogToFileging auf diese Weise besser und sauberer ist?
logBook.log()
anzutreffen ist.