瀏覽代碼

HPCC-21376 Support new BackEndRequest in ESP Logging Request

Signed-off-by: wangkx <kevin.wang@lexisnexis.com>
wangkx 6 年之前
父節點
當前提交
f5f42a649a

+ 24 - 4
esp/logging/logginglib/loggingagentbase.cpp

@@ -33,7 +33,15 @@ void CLogContentFilter::readAllLogFilters(IPropertyTree* cfg)
         groupFilterRead = true;
     }
 
-    for (unsigned i = 0; i < ESPLCGBackEndResp; i++)
+    xpath.setf("Filters/Filter[@type='%s']", espLogContentGroupNames[ESPLCGBackEndReq]);
+    filter = cfg->queryBranch(xpath.str());
+    if (filter && filter->hasProp("@value"))
+    {
+        logBackEndReq = filter->getPropBool("@value");
+        groupFilterRead = true;
+    }
+
+    for (unsigned i = 0; i < ESPLCGBackEndReq; i++)
     {
         if (readLogFilters(cfg, i))
             groupFilterRead = true;
@@ -169,6 +177,7 @@ IEspUpdateLogRequestWrap* CLogContentFilter::filterLogContent(IEspUpdateLogReque
             Owned<IPropertyTree> userRequest = req->getUserRequest();
             const char* userResp = req->getUserResponse();
             const char* logDatasets = req->getLogDatasets();
+            const char* backEndReq = req->getBackEndRequest();
             const char* backEndResp = req->getBackEndResponse();
             if (!espContext && !userContext && !userRequest && (!userResp || !*userResp) && (!backEndResp || !*backEndResp))
                 throw MakeStringException(EspLoggingErrors::UpdateLogFailed, "Failed to read log content");
@@ -190,19 +199,21 @@ IEspUpdateLogRequestWrap* CLogContentFilter::filterLogContent(IEspUpdateLogReque
                 IPropertyTree* pTree = ensurePTree(logContentTree, espLogContentGroupNames[ESPLCGUserReq]);
                 pTree->addPropTree(userRequest->queryName(), LINK(userRequest));
             }
-            if (userResp && *userResp)
+            if (!isEmptyString(userResp))
             {
                 IPropertyTree* pTree = ensurePTree(logContentTree, espLogContentGroupNames[ESPLCGUserResp]);
                 Owned<IPropertyTree> userRespTree = createPTreeFromXMLString(userResp);
                 pTree->addPropTree(userRespTree->queryName(), LINK(userRespTree));
             }
-            if (logDatasets && *logDatasets)
+            if (!isEmptyString(logDatasets))
             {
                 IPropertyTree* pTree = ensurePTree(logContentTree, espLogContentGroupNames[ESPLCGLogDatasets]);
                 Owned<IPropertyTree> logDatasetTree = createPTreeFromXMLString(logDatasets);
                 pTree->addPropTree(logDatasetTree->queryName(), LINK(logDatasetTree));
             }
-            if (backEndResp && *backEndResp)
+            if (!isEmptyString(backEndReq))
+                logContentTree->addProp(espLogContentGroupNames[ESPLCGBackEndReq], backEndReq);
+            if (!isEmptyString(backEndResp))
                 logContentTree->addProp(espLogContentGroupNames[ESPLCGBackEndResp], backEndResp);
         }
     }
@@ -271,6 +282,15 @@ IEspUpdateLogRequestWrap* CLogContentFilter::filterLogContent(IEspUpdateLogReque
                     logContentEmpty = false;
                 }
             }
+            if (logBackEndReq)
+            {
+                const char* request = req->getBackEndRequest();
+                if (!isEmptyString(request))
+                {
+                    logContentTree->addProp(espLogContentGroupNames[ESPLCGBackEndReq], request);
+                    logContentEmpty = false;
+                }
+            }
             if (logBackEndResp)
             {
                 const char* resp = req->getBackEndResponse();

+ 14 - 7
esp/logging/logginglib/loggingagentbase.hpp

@@ -34,12 +34,13 @@ enum ESPLogContentGroup
     ESPLCGUserReq = 2,
     ESPLCGUserResp = 3,
     ESPLCGLogDatasets = 4,
+    ESPLCGBackEndReq = 5,
     ESPLCGBackEndResp = 5,
     ESPLCGAll = 6
 };
 
 static const char * const espLogContentGroupNames[] = { "ESPContext", "UserContext", "UserRequest", "UserResponse",
-    "LogDatasets", "BackEndResponse", "", NULL };
+    "LogDatasets", "BackEndRequest", "BackEndResponse", "", NULL };
 
 #define UPDATELOGTHREADWAITINGTIME 3000
 
@@ -137,6 +138,7 @@ interface IEspUpdateLogRequestWrap : extends IInterface
     virtual IPropertyTree* getUserRequest()=0;
     virtual IPropertyTree* getLogRequestTree()=0;
     virtual IInterface* getExtraLog()=0;
+    virtual const char* getBackEndRequest()=0;
     virtual const char* getBackEndResponse()=0;
     virtual const char* getUserResponse()=0;
     virtual const char* getLogDatasets()=0;
@@ -149,6 +151,7 @@ interface IEspUpdateLogRequestWrap : extends IInterface
     virtual void setUserRequest(IPropertyTree* val)=0;
     virtual void setLogRequestTree(IPropertyTree* val)=0;
     virtual void setExtraLog(IInterface* val)=0;
+    virtual void setBackEndRequest(const char* val)=0;
     virtual void setBackEndResponse(const char* val)=0;
     virtual void setUserResponse(const char* val)=0;
     virtual void setLogDatasets(const char* val)=0;
@@ -167,7 +170,7 @@ class CUpdateLogRequestWrap : implements IEspUpdateLogRequestWrap, public CInter
     Owned<IPropertyTree> userRequest;
     Owned<IPropertyTree> logRequestTree;
     Owned<IInterface> extraLog;
-    StringAttr  backEndResponse;
+    StringAttr  backEndRequest, backEndResponse;
     StringAttr  userResponse;
     StringAttr  logDatasets;
     unsigned    retryCount;
@@ -179,10 +182,10 @@ public:
     CUpdateLogRequestWrap(const char* _GUID, const char* _option, const char* _updateLogRequest)
         : GUID(_GUID), option(_option), updateLogRequest(_updateLogRequest), retryCount(0) {};
     CUpdateLogRequestWrap(const char* _GUID, const char* _option, IPropertyTree* _espContext,
-        IPropertyTree*_userContext, IPropertyTree*_userRequest, const char *_backEndResponse, const char *_userResponse,
-        const char *_logDatasets)
-        : GUID(_GUID), option(_option), backEndResponse(_backEndResponse), userResponse(_userResponse),
-        logDatasets(_logDatasets), retryCount(0)
+        IPropertyTree*_userContext, IPropertyTree*_userRequest, const char *_backEndRequest,
+        const char *_backEndResponse, const char *_userResponse, const char *_logDatasets)
+        : GUID(_GUID), option(_option), backEndRequest(_backEndRequest), backEndResponse(_backEndResponse),
+        userResponse(_userResponse), logDatasets(_logDatasets), retryCount(0)
     {
         userContext.setown(_userContext);
         espContext.setown(_espContext);
@@ -202,6 +205,7 @@ public:
         userContext.clear();
         userResponse.clear();
         logDatasets.clear();
+        backEndRequest.clear();
         backEndResponse.clear();
         updateLogRequest.clear();
         logRequestTree.clear();
@@ -216,6 +220,7 @@ public:
     IPropertyTree* getUserRequest() {return userRequest.getLink();};
     IPropertyTree* getLogRequestTree() {return logRequestTree.getLink();};
     IInterface* getExtraLog() {return extraLog.getLink();};
+    const char* getBackEndRequest() {return backEndRequest.get();};
     const char* getBackEndResponse() {return backEndResponse.get();};
     const char* getUserResponse() {return userResponse.get();};
     const char* getLogDatasets() {return logDatasets.get();};
@@ -228,6 +233,7 @@ public:
     void setUserRequest(IPropertyTree* val) {userRequest.setown(val);};
     void setLogRequestTree(IPropertyTree* val) {logRequestTree.setown(val);};
     void setExtraLog(IInterface* val) {extraLog.setown(val);};
+    void setBackEndRequest(const char* val) {backEndRequest.set(val);};
     void setBackEndResponse(const char* val) {backEndResponse.set(val);};
     void setUserResponse(const char* val) {userResponse.set(val);};
     void setLogDatasets(const char* val) {logDatasets.set(val);};
@@ -267,7 +273,8 @@ public:
 
 class LOGGINGCOMMON_API CLogContentFilter : public CInterface
 {
-    bool            logBackEndResp;
+    bool            logBackEndReq = true;
+    bool            logBackEndResp = true;
     StringArray     logContentFilters;
     CIArrayOf<CESPLogContentGroupFilters> groupFilters;
 

+ 3 - 3
esp/logging/loggingmanager/loggingmanager.cpp

@@ -97,7 +97,7 @@ bool CLoggingManager::updateLog(IEspLogEntry* entry, StringBuffer& status)
         return updateLog(entry->getEspContext(), entry->getOption(), entry->getLogInfoTree(), entry->getExtraLog(), status);
 
     return updateLog(entry->getEspContext(), entry->getOption(), entry->getUserContextTree(), entry->getUserRequestTree(),
-        entry->getBackEndResp(), entry->getUserResp(), entry->getLogDatasets(), status);
+        entry->getBackEndReq(), entry->getBackEndResp(), entry->getUserResp(), entry->getLogDatasets(), status);
 }
 
 bool CLoggingManager::updateLog(IEspContext* espContext, const char* option, const char* logContent, StringBuffer& status)
@@ -147,7 +147,7 @@ bool CLoggingManager::updateLog(IEspContext* espContext, const char* option, IPr
 }
 
 bool CLoggingManager::updateLog(IEspContext* espContext, const char* option, IPropertyTree* userContext, IPropertyTree* userRequest,
-        const char* backEndResp, const char* userResp, const char* logDatasets, StringBuffer& status)
+    const char* backEndReq, const char* backEndResp, const char* userResp, const char* logDatasets, StringBuffer& status)
 {
     if (!initialized)
         throw MakeStringException(-1,"LoggingManager not initialized");
@@ -178,7 +178,7 @@ bool CLoggingManager::updateLog(IEspContext* espContext, const char* option, IPr
             espContextTree->addProp("ResponseTime", VStringBuffer("%.4f", (msTick()-espContext->queryCreationTime())/1000.0));
         }
         Owned<IEspUpdateLogRequestWrap> req =  new CUpdateLogRequestWrap(nullptr, option, espContextTree.getClear(), LINK(userContext), LINK(userRequest),
-            backEndResp, userResp, logDatasets);
+            backEndReq, backEndResp, userResp, logDatasets);
         Owned<IEspUpdateLogResponse> resp =  createUpdateLogResponse();
         bRet = updateLog(espContext, *req, *resp, status);
     }

+ 2 - 0
esp/logging/loggingmanager/loggingmanager.h

@@ -34,6 +34,7 @@ interface IEspLogEntry  : implements IInterface
     virtual void setOwnExtraLog(IInterface* extra) = 0;
     virtual void setOption(const char* ptr) = 0;
     virtual void setLogContent(const char* ptr) = 0;
+    virtual void setBackEndReq(const char* ptr) = 0;
     virtual void setBackEndResp(const char* ptr) = 0;
     virtual void setUserResp(const char* ptr) = 0;
     virtual void setLogDatasets(const char* ptr) = 0;
@@ -45,6 +46,7 @@ interface IEspLogEntry  : implements IInterface
     virtual IInterface* getExtraLog() = 0;
     virtual const char* getOption() = 0;
     virtual const char* getLogContent() = 0;
+    virtual const char* getBackEndReq() = 0;
     virtual const char* getBackEndResp() = 0;
     virtual const char* getUserResp() = 0;
     virtual const char* getLogDatasets() = 0;

+ 4 - 2
esp/logging/loggingmanager/loggingmanager.hpp

@@ -34,7 +34,7 @@
 class CEspLogEntry : implements IEspLogEntry, public CInterface
 {
     Owned<IEspContext> espContext;
-    StringAttr option, logContent, backEndResp, userResp, logDatasets;
+    StringAttr option, logContent, backEndReq, backEndResp, userResp, logDatasets;
     Owned<IPropertyTree> userContextTree;
     Owned<IPropertyTree> userRequestTree;
     Owned<IPropertyTree> logInfoTree;
@@ -52,6 +52,7 @@ public:
     void setOwnExtraLog(IInterface* extra) { extraLog.setown(extra); };
     void setOption(const char* ptr) { option.set(ptr); };
     void setLogContent(const char* ptr) { logContent.set(ptr); };
+    void setBackEndReq(const char* ptr) { backEndReq.set(ptr); };
     void setBackEndResp(const char* ptr) { backEndResp.set(ptr); };
     void setUserResp(const char* ptr) { userResp.set(ptr); };
     void setLogDatasets(const char* ptr) { logDatasets.set(ptr); };
@@ -63,6 +64,7 @@ public:
     IInterface* getExtraLog() { return extraLog; };
     const char* getOption() { return option.get(); };
     const char* getLogContent() { return logContent.get(); };
+    const char* getBackEndReq() { return backEndReq.get(); };
     const char* getBackEndResp() { return backEndResp.get(); };
     const char* getUserResp() { return userResp.get(); };
     const char* getLogDatasets() { return logDatasets.get(); };
@@ -80,7 +82,7 @@ class CLoggingManager : implements ILoggingManager, public CInterface
 
     bool updateLog(IEspContext* espContext, IEspUpdateLogRequestWrap& req, IEspUpdateLogResponse& resp, StringBuffer& status);
     bool updateLog(IEspContext* espContext, const char* option, IPropertyTree* userContext, IPropertyTree* userRequest,
-        const char* backEndResp, const char* userResp, const char* logDatasets, StringBuffer& status);
+        const char* backEndReq, const char* backEndResp, const char* userResp, const char* logDatasets, StringBuffer& status);
     bool updateLog(IEspContext* espContext, const char* option, const char* logContent, StringBuffer& status);
     bool updateLog(IEspContext* espContext, const char* option, IPropertyTree* logInfo, IInterface* extraLog, StringBuffer& status);