📄 staflogservice.cpp
字号:
static STAFString sLocal("LOCAL");static STAFString sVar("VAR");static STAFString sResStrResolve("RESOLVE REQUEST ");static STAFString sString(" STRING ");static STAFString sTrust("TRUST");static STAFString sMisc("MISC");static STAFString sRESOLVE("RESOLVE");static STAFString sEverythingLogMask("11111111111111111111111111111111");static STAFString sOldSep(kUTF8_VBAR);static STAFString sEOLString("RESOLVE STRING {STAF/Config/Sep/Line}");static STAFString sResMachineString("RESOLVE STRING {STAF/Config/Machine}");static STAFString sDefAuthString( "RESOLVE STRING {STAF/Config/DefaultAuthenticator}");static STAFString sListDots("........................................");static STAFString sSizeEquals("Size=");static STAFString sGetMachine("GET MACHINE ");static STAFString sGetUser(" USER ");static STAFString sMachine("MACHINE ");static STAFString sLOG("LOG");static STAFString sQUERY("QUERY");static STAFString sLIST("LIST");static STAFString sPURGE("PURGE");static STAFString sDELETE("DELETE");static STAFString sHELP("HELP");static STAFString sSET("SET");static STAFString sVERSION("VERSION");static STAFString sGLOBAL("GLOBAL");static STAFString sMACHINE("MACHINE");static STAFString sMACHINES("MACHINES");static STAFString sHANDLE("HANDLE");static STAFString sHANDLES("HANDLES");static STAFString sLOGNAME("LOGNAME");static STAFString sLEVEL("LEVEL");static STAFString sMESSAGE("MESSAGE");static STAFString sRESOLVEMESSAGE("RESOLVEMESSAGE");static STAFString sNORESOLVEMESSAGE("NORESOLVEMESSAGE");static STAFString sCONTAINS("CONTAINS");static STAFString sCSCONTAINS("CSCONTAINS");static STAFString sSTARTSWITH("STARTSWITH");static STAFString sCSSTARTSWITH("CSSTARTSWITH");static STAFString sQMACHINE("QMACHINE");static STAFString sQHANDLE("QHANDLE");static STAFString sNAME("NAME");static STAFString sUSER("USER");static STAFString sENDPOINT("ENDPOINT");static STAFString sLEVELMASK("LEVELMASK");static STAFString sFROM("FROM");static STAFString sAFTER("AFTER");static STAFString sFROMRECORD("FROMRECORD");static STAFString sTORECORD("TORECORD");static STAFString sBEFORE("BEFORE");static STAFString sTO("TO");static STAFString sLEVELBITSTRING("LEVELBITSTRING");static STAFString sFIRST("FIRST");static STAFString sLAST("LAST");static STAFString sALL("ALL");static STAFString sSTATS("STATS");static STAFString sTOTAL("TOTAL");static STAFString sLONG("LONG");static STAFString sDIRECTORY("DIRECTORY");static STAFString sRMTMACHINE("RMTMACHINE");static STAFString sRMTNICKNAME("RMTNICKNAME");static STAFString sRMTHANDLE("RMTHANDLE");static STAFString sRMTNAME("RMTNAME");static STAFString sRMTUSER("RMTUSER");static STAFString sRMTMACH("RMTMACH");static STAFString sMAXRECORDSIZE("MAXRECORDSIZE");static STAFString sDEFAULTMAXQUERYRECORDS("DEFAULTMAXQUERYRECORDS");static STAFString sENABLERESOLVEMESSAGEVAR("ENABLERESOLVEMESSAGEVAR");static STAFString sDISABLERESOLVEMESSAGEVAR("DISABLERESOLVEMESSAGEVAR");static STAFString sSETTINGS("SETTINGS");static STAFString sENABLEREMOTELOGGING("ENABLEREMOTELOGGING");static STAFString sREMOTELOGSERVER("REMOTELOGSERVER");static STAFString sREMOTELOGSERVICE("REMOTELOGSERVICE");static STAFString sTODAY("TODAY");static STAFString sFATAL("FATAL");static STAFString sERROR("ERROR");static STAFString sWARNING("WARNING");static STAFString sINFO("INFO");static STAFString sTRACE("TRACE");static STAFString sTRACE2("TRACE2");static STAFString sTRACE3("TRACE3");static STAFString sDEBUG("DEBUG");static STAFString sDEBUG2("DEBUG2");static STAFString sDEBUG3("DEBUG3");static STAFString sSTART("START");static STAFString sSTOP("STOP");static STAFString sPASS("PASS");static STAFString sFAIL("FAIL");static STAFString sSTATUS("STATUS");static STAFString sUSER1("USER1");static STAFString sUSER2("USER2");static STAFString sUSER3("USER3");static STAFString sUSER4("USER4");static STAFString sUSER5("USER5");static STAFString sUSER6("USER6");static STAFString sUSER7("USER7");static STAFString sUSER8("USER8");static STAFString sFATALPretty("Fatal");static STAFString sERRORPretty("Error");static STAFString sWARNINGPretty("Warning");static STAFString sINFOPretty("Info");static STAFString sTRACEPretty("Trace");static STAFString sTRACE2Pretty("Trace2");static STAFString sTRACE3Pretty("Trace3");static STAFString sDEBUGPretty("Debug");static STAFString sDEBUG2Pretty("Debug2");static STAFString sDEBUG3Pretty("Debug3");static STAFString sSTARTPretty("Start");static STAFString sSTOPPretty("Stop");static STAFString sPASSPretty("Pass");static STAFString sFAILPretty("Fail");static STAFString sSTATUSPretty("Status");static STAFString sUSER1Pretty("User1");static STAFString sUSER2Pretty("User2");static STAFString sUSER3Pretty("User3");static STAFString sUSER4Pretty("User4");static STAFString sUSER5Pretty("User5");static STAFString sUSER6Pretty("User6");static STAFString sUSER7Pretty("User7");static STAFString sUSER8Pretty("User8");static STAFString sUNKNOWNPretty("Unknown");static STAFString sFATALBits ("00000000000000000000000000000001");static STAFString sERRORBits ("00000000000000000000000000000010");static STAFString sWARNINGBits("00000000000000000000000000000100");static STAFString sINFOBits ("00000000000000000000000000001000");static STAFString sTRACEBits ("00000000000000000000000000010000");static STAFString sTRACE2Bits ("00000000000000000000000000100000");static STAFString sTRACE3Bits ("00000000000000000000000001000000");static STAFString sDEBUGBits ("00000000000000000000000010000000");static STAFString sDEBUG2Bits ("00000000000000000000000100000000");static STAFString sDEBUG3Bits ("00000000000000000000001000000000");static STAFString sSTARTBits ("00000000000000000000010000000000");static STAFString sSTOPBits ("00000000000000000000100000000000");static STAFString sPASSBits ("00000000000000000001000000000000");static STAFString sFAILBits ("00000000000000000010000000000000");static STAFString sSTATUSBits ("00000000000000000100000000000000");static STAFString sUSER1Bits ("00000001000000000000000000000000");static STAFString sUSER2Bits ("00000010000000000000000000000000");static STAFString sUSER3Bits ("00000100000000000000000000000000");static STAFString sUSER4Bits ("00001000000000000000000000000000");static STAFString sUSER5Bits ("00010000000000000000000000000000");static STAFString sUSER6Bits ("00100000000000000000000000000000");static STAFString sUSER7Bits ("01000000000000000000000000000000");static STAFString sUSER8Bits ("10000000000000000000000000000000");static STAFString sUNKNOWNBits("00000000000000000000000000000000");static const STAFString sUnauthenticatedUser = "none" + sSpecSeparator + "anonymous";static unsigned int sCurrRecordFormatID = 4;static unsigned int sListWidth = 40;// Optimal string size - reasonable message length to avoid reallocationstatic unsigned int sQueryResultChunkSize = 8192 - 256;// Prototypesstatic STAFResultPtr handleLog(STAFServiceRequestLevel30 *, LogServiceData *);static STAFResultPtr handleQuery(STAFServiceRequestLevel30 *, LogServiceData *);static STAFResultPtr handlePurge(STAFServiceRequestLevel30 *, LogServiceData *);static STAFResultPtr handleList(STAFServiceRequestLevel30 *, LogServiceData *);static STAFResultPtr handleDelete(STAFServiceRequestLevel30 *, LogServiceData *);static STAFResultPtr handleSet(STAFServiceRequestLevel30 *, LogServiceData *);static STAFResultPtr handleHelp(STAFServiceRequestLevel30 *, LogServiceData *);static STAFResultPtr handleRemoteLog(STAFServiceRequestLevel30 *, LogServiceData *);static STAFResultPtr handleRemoteLogGeneral(STAFServiceRequestLevel30 *, LogServiceData *);static bool isValidLogLevel(const STAFString &levelString, unsigned int &outputLevel);static bool convertLogLevelToUInt(const STAFString &levelString, unsigned int &outputLevel);static STAFString &convertLogLevelToString(unsigned int logLevel, bool levelAsBits = false);static bool convertLogMaskToUInt(const STAFString &logmaskString, unsigned int &logMask);void readUIntFromFile(istream &input, unsigned int &data, unsigned int length = 4);void writeUIntToFile(ostream &output, unsigned int data, unsigned int length = 4);void readStringFromFile(istream &input, STAFString &inString);void writeStringToFile(ostream &output, const STAFString &outString);STAFResultPtr resolveStr(STAFServiceRequestLevel30 *pInfo, LogServiceData *pData, const STAFString &theString);STAFResultPtr resolveOp(STAFServiceRequestLevel30 *pInfo, LogServiceData *pData, STAFCommandParseResultPtr &parsedResult, const STAFString &fOption, unsigned int optionIndex = 1);STAFResultPtr resolveOpLocal(LogServiceData *pData, STAFCommandParseResultPtr &parsedResult, const STAFString &fOption, unsigned int optionIndex = 1);bool generateQueryPurgeDeleteLogFilePath(STAFFSPath &logfilePath, STAFResultPtr &errorResult, STAFServiceRequestLevel30 *pInfo, LogServiceData *pData, STAFCommandParseResultPtr &parsedResult);bool updateQueryPurgeLogFilter(LogRecordFilter &logFilter, STAFResultPtr &errorResult, STAFServiceRequestLevel30 *pInfo, LogServiceData *pData, STAFCommandParseResultPtr &parsedResult);unsigned int readLogRecordFromFile(istream &input, LogRecord &logRecord, unsigned int recordNumber);void writeLogRecordToFile(ostream &output, LogRecord &logRecord);void addLogRecordToList(STAFObjectPtr &logList, STAFMapClassDefinitionPtr &logRecordClass, const LogRecord &logRecord, bool levelAsBits, bool longFormat);void printLogRecord(const LogRecord &logRecord);bool logRecordMatchesFilter(const LogRecord &logRecord, const LogRecordFilter &logFilter, const STAFString &defaultAuthenticator);void updateLogStats(LogStats &logStats, unsigned int logLevel);void addLogStatsToMap(STAFObjectPtr &queryStatsMap, const LogStats &logStats);static void registerHelpData(LogServiceData *pData, unsigned int errorNumber, const STAFString &shortInfo, const STAFString &longInfo);static void unregisterHelpData(LogServiceData *pData, unsigned int errorNumber);// Begin implementationSTAFRC_t STAFServiceGetLevelBounds(unsigned int levelID, unsigned int *minimum, unsigned int *maximum){ switch (levelID) { case kServiceInfo: { *minimum = 30; *maximum = 30; break; } case kServiceInit: { *minimum = 30; *maximum = 30; break; } case kServiceAcceptRequest: { *minimum = 30; *maximum = 30; break; } case kServiceTerm: case kServiceDestruct: { *minimum = 0; *maximum = 0; break; } default: { return kSTAFInvalidAPILevel; } } return kSTAFOk;}STAFRC_t STAFServiceConstruct(STAFServiceHandle_t *pServiceHandle, void *pServiceInfo, unsigned int infoLevel, STAFString_t *pErrorBuffer){ STAFRC_t rc = kSTAFUnknownError; try { if (infoLevel != 30) return kSTAFInvalidAPILevel; STAFServiceInfoLevel30 *pInfo = reinterpret_cast<STAFServiceInfoLevel30 *>(pServiceInfo); LogServiceData data; data.fDebugMode = 0; data.fRLogMode = 0; data.fMaxRecordSize = 100000; data.fDefaultMaxQueryRecords = 100; data.fDefaultResolveMessage = 0; data.fUseResolveMessageVar = 0; data.fRemoteLogService = sLOG; data.fShortName = STAFString(pInfo->name).toUpperCase(); data.fName = "STAF/Service/"; data.fName += pInfo->name; data.fResolveLogMaskString = sLeftCurly + data.fName + "/Mask}"; data.fResolveMessageString = sLeftCurly + data.fName + "/ResolveMessage}"; // Walk through and verify the config options // Note: The log service does not currently have any options for (unsigned int i = 0; i < pInfo->numOptions; ++i) { STAFString optionError("Invalid option, "); optionError += pInfo->pOptionName[i]; *pErrorBuffer = optionError.adoptImpl(); return kSTAFServiceConfigurationError; } // Setup parsers // PARMS parser data.fParmsParser = STAFCommandParserPtr(new STAFCommandParser, STAFCommandParserPtr::INIT); data.fParmsParser->addOption(
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -