Estoy trabajando en un proyecto en Delphi y estoy creando un instalador para la aplicación, hay tres partes principales.
- Instalación / desinstalación de PostgreSQL
- instalación / desinstalación de myapplication (la configuración de myapplication se crea usando nsi).
- Creación de tablas en Postgres a través de script (archivos por lotes).
Todo funciona bien y sin problemas, pero si algo falla, he creado un LogToFileger que registrará LogToFile en cada paso del proceso, de
esta manera
LogToFileToFile.LogToFile('[DatabaseInstallation] : [ACTION]:Postgres installation started');
La función LogToFileToFile.LogToFile()
Esto escribirá el contenido en un archivo. Esto está funcionando bien, pero el problema es que ha estropeado el código ya que se ha vuelto difícil leer el código ya que uno solo puede ver la LogToFileToFile.LogToFile()
llamada a la función en todas partes del código
un ejemplo
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;
como puedes ver hay muchas LogToFileToFile.LogToFile()
llamadas,
antes de que fuera
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)
Este es el caso en todo mi código ahora.
Es difícil de leer.
¿Alguien puede sugerirme una buena manera de ordenar las llamadas a LogToFile?
me gusta
Sangría la llamada 'LogToFileToFile.LogToFile () `de
esta maneraif 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;
Unidad separada como
LogToFileger
Esta unidad tendrá todos los mensajes de LogToFile deswitch case
esta maneraFunction 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;
así que solo puedo llamar a LogToFilegingMyMessage (1) cuando sea necesario.
¿Alguien puede decirme cuál es un enfoque mejor y más limpio para LogToFileging de esta manera?
logBook.log()
se encuentra.