Sto lavorando a un progetto in Delphi e sto creando un programma di installazione per l'applicazione, ci sono tre parti principali.
- Installazione / disinstallazione di PostgreSQL
- installazione / disinstallazione di myapplication (l'installazione di myapplication viene creata utilizzando nsi).
- Creazione di tabelle in Postgres tramite script (file batch).
Ogni cosa funziona bene e senza intoppi, ma se qualcosa fallisce ho creato un LogToFileger che LogToFile ad ogni fase del processo, in
questo modo
LogToFileToFile.LogToFile('[DatabaseInstallation] : [ACTION]:Postgres installation started');
La funzione LogToFileToFile.LogToFile()
Questo scriverà il contenuto in un file. Funziona bene, ma il problema è che questo ha incasinato il codice poiché in esso è diventato difficile leggere il codice poiché si vede solo la LogToFileToFile.LogToFile()
chiamata di funzione ovunque nel codice
un esempio
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;
come puoi vedere ci sono molte LogToFileToFile.LogToFile()
chiamate,
prima che lo fosse
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)
questo è il caso nel mio intero codice ora.
è difficile da leggere.
qualcuno mi può suggerire un bel modo per disordinare le chiamate a LogToFile?
piace
Rientro della chiamata 'LogToFileToFile.LogToFile () `in
questo modoif 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;
Unità separata come
LogToFileger
Questa unità avrà tutti i messaggi LogToFile inswitch case
questo modoFunction 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;
così posso semplicemente chiamare LogToFilegingMyMessage (1) dove mai richiesto.
Qualcuno può dirmi quale sia un approccio migliore e più pulito a LogToFileging in questo modo?
logBook.log()
si incontra.