Pracuję nad projektem w delphi i tworzę instalator aplikacji, są trzy główne części.
- Instalacja / dezinstalacja PostgreSQL
- myapplication (konfiguracja myapplication jest tworzona za pomocą nsi) instalacja / deinstalacja.
- Tworzenie tabel w Postgresie za pomocą skryptu (pliki wsadowe).
Każda rzecz działa dobrze i płynnie, ale jeśli coś się nie powiedzie, stworzyłem LogToFileger, który będzie LogToFile na każdym etapie procesu,
jak ten
LogToFileToFile.LogToFile('[DatabaseInstallation] : [ACTION]:Postgres installation started');
Funkcja LogToFileToFile.LogToFile()
Spowoduje to zapisanie zawartości do pliku. Działa to ładnie, ale problem polega na tym, że zepsuł się kod, ponieważ trudno było odczytać kod, ponieważ można zobaczyć tylko LogToFileToFile.LogToFile()
wywołanie funkcji wszędzie w kodzie
przykład
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;
jak widać, było wiele LogToFileToFile.LogToFile()
połączeń,
zanim było
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)
tak jest teraz w całym moim kodzie.
jest trudny do odczytania.
czy ktoś może mi zasugerować dobry sposób na uporządkowanie połączeń do LogToFile?
lubić
Wcięcie wywołania „LogToFileToFile.LogToFile ()` w
ten sposóbif 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;
Oddzielna jednostka, taka jak
LogToFileger
Ta jednostka będzie zawierała wszystkie wiadomości LogToFile wswitch case
podobny sposóbFunction 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;
więc mogę po prostu wywołać LogToFilegingMyMessage (1) tam, gdzie jest to wymagane.
Czy ktoś może mi powiedzieć, które jest lepsze i czystsze podejście do LogToFileging w ten sposób?
logBook.log()
napotyka.