Je travaille un projet à delphi et je crée un installateur pour l'application, il y a trois parties principales.
- Installation / désinstallation de PostgreSQL
- myapplication (la configuration de myapplication est créée à l'aide de nsi) installation / désinstallation.
- Création de tables dans Postgres via script (fichiers batch).
Tout se passe bien et sans problème, mais si quelque chose échoue, j'ai créé un LogToFileger qui enregistrera chaque étape du processus,
comme ceci
LogToFileToFile.LogToFile('[DatabaseInstallation] : [ACTION]:Postgres installation started');
La fonction LogToFileToFile.LogToFile()
Ceci écrit le contenu dans un fichier. Cela fonctionne bien, mais le problème est que cela a foiré le code car il est devenu difficile de lire le code car on ne voit que l' LogToFileToFile.LogToFile()
appel de fonction partout dans le code
un exemple
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;
comme vous pouvez le voir, il y a eu beaucoup d' LogToFileToFile.LogToFile()
appels
avant
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)
c'est le cas dans tout mon code maintenant.
c'est difficile à lire.
quelqu'un peut-il me suggérer une bonne façon de désencombrer les appels à LogToFile?
comme
Indenter l'appel «LogToFileToFile.LogToFile ()`
comme ceciif 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é distincte comme
LogToFileger
Cette unité aura tous les messages LogToFile dans unswitch case
comme celui-ciFunction 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;
donc je peux simplement appeler LogToFilegingMyMessage (1) là où cela est nécessaire.
Quelqu'un peut-il me dire quelle est la meilleure et plus propre approche de LogToFileging de cette façon?
logBook.log()
on le rencontre.