Quellcode durchsuchen

HPCC-24118 Ensure data files for ESP decoupled logging

Signed-off-by: wangkx <kevin.wang@lexisnexis.com>
wangkx vor 5 Jahren
Ursprung
Commit
5c1bdccf70
2 geänderte Dateien mit 18 neuen und 0 gelöschten Zeilen
  1. 17 0
      esp/logging/logginglib/logthread.cpp
  2. 1 0
      esp/logging/logginglib/logthread.hpp

+ 17 - 0
esp/logging/logginglib/logthread.cpp

@@ -103,6 +103,9 @@ CLogThread::CLogThread(IPropertyTree* _cfg , const char* _service, const char* _
         PROGLOG("%s %s: %s", agentName.get(), PropAckedFiles, settings->ackedFileList.str());
         PROGLOG("%s %s: %s", agentName.get(), PropDefaultAckedLogRequests, settings->ackedLogRequestFile.str());
         PROGLOG("%s %s: %d. %s: %d", agentName.get(), PropReadRequestWaitingSeconds, settings->waitSeconds, PropPendingLogBufferSize, settings->pendingLogBufferSize);
+
+        checkAndCreateFile(settings->ackedFileList);
+        checkAndCreateFile(settings->ackedLogRequestFile);
         logRequestReader.setown(new CLogRequestReader(settings.getClear(), this));
     }
     PROGLOG("%s CLogThread started.", agentName.get());
@@ -556,6 +559,20 @@ IEspUpdateLogRequestWrap* CLogThread::readJobQueue()
 #undef LOG_LEVEL
 }
 
+void CLogThread::checkAndCreateFile(const char* fileName)
+{
+    Owned<IFile> file = createIFile(fileName);
+    if(file->isFile() != notFound)
+        return;
+
+    StringBuffer dir;
+    splitFilename(fileName, &dir, &dir, nullptr, nullptr);
+    recursiveCreateDirectory(dir);
+
+    Owned<IFileIO> io = file->openShared(IFOcreate, IFSHfull);
+    PROGLOG("CLogThread::checkAndCreateFile: %s is created.", fileName);
+}
+
 CLogRequestReader::~CLogRequestReader()
 {
     stopping = true;

+ 1 - 0
esp/logging/logginglib/logthread.hpp

@@ -129,6 +129,7 @@ class CLogThread : public Thread , implements IUpdateLogThread
     void writeJobQueue(IEspUpdateLogRequestWrap* jobToWrite);
     IEspUpdateLogRequestWrap* readJobQueue();
     IEspUpdateLogRequestWrap* checkAndReadLogRequestFromSharedTankFile(IEspUpdateLogRequestWrap* logRequest);
+    void checkAndCreateFile(const char* fileName);
 
 public:
     IMPLEMENT_IINTERFACE;