मैं डेल्फी में एक परियोजना पर काम कर रहा हूं और मैं आवेदन के लिए एक इंस्टॉलर बना रहा हूं, तीन मुख्य भाग हैं।
- PostgreSQL स्थापना / स्थापना रद्द करें
- myapplication (myapplication की स्थापना nsi का उपयोग करके बनाई गई है) स्थापना / स्थापना रद्द करें।
- स्क्रिप्ट (बैच फ़ाइलों) के माध्यम से पोस्टग्रेज में टेबल बनाना ।
हर चीज ठीक और सुचारू रूप से चलती है, लेकिन अगर कुछ विफल होता है तो मैंने एक LogToFileger बनाया है जो इस प्रक्रिया के हर चरण को LogToFile करेगा,
जैसे कि
LogToFileToFile.LogToFile('[DatabaseInstallation] : [ACTION]:Postgres installation started');
फ़ंक्शन LogToFileToFile.LogToFile()
यह सामग्री को किसी फ़ाइल में लिख देगा। यह अच्छी तरह से काम कर रहा है, लेकिन समस्या यह है कि इसने कोड को गड़बड़ कर दिया है क्योंकि इसमें कोड को पढ़ना मुश्किल हो गया है क्योंकि एक सीए केवल LogToFileToFile.LogToFile()
कोड में हर जगह फ़ंक्शन कॉल देखता है।
एक उदाहरण
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;
जैसा कि आप देख सकते हैं कि बहुत सारे LogToFileToFile.LogToFile()
कॉल थे,
पहले यह था
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)
अब मेरे पूरे कोड में यही स्थिति है।
पढ़ना मुश्किल है।
क्या कोई मुझे LogToFile पर कॉल को अव्यवस्थित करने का एक अच्छा तरीका सुझा सकता है?
पसंद
इस तरह से 'LogToFileToFile.LogToFile () कॉल का संकेतif 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;
अलग इकाई की तरह
LogToFileger
इस इकाई में एक में सभी LogToFile संदेशों होगाswitch case
इस तरहFunction 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;
इसलिए मैं बस LogToFilegingMyMessage (1) को कॉल कर सकता हूं जहां कभी भी आवश्यकता हो।
क्या कोई मुझे बता सकता है कि इस तरह से LogToFileging के लिए एक बेहतर और क्लीनर दृष्टिकोण क्या है?
logBook.log()
इसका सामना करना पड़ता है।