From e549e559af4bd344df52aeb687314ae809a3694e Mon Sep 17 00:00:00 2001 From: youyouyuai Date: Fri, 18 Jun 2021 09:22:36 +0000 Subject: [PATCH 1/3] log persist & property Signed-off-by: youyouyuai --- adapter/properties.cpp | 35 +++++++++-------------- adapter/properties.h | 1 + frameworks/native/include/hilogtool_msg.h | 2 +- services/hilogd/log_buffer.cpp | 2 +- services/hilogd/log_querier.cpp | 4 +-- services/hilogtool/log_controller.cpp | 12 ++++---- services/hilogtool/main.cpp | 12 ++++---- 7 files changed, 32 insertions(+), 36 deletions(-) diff --git a/adapter/properties.cpp b/adapter/properties.cpp index 39dab72..aa407d7 100644 --- a/adapter/properties.cpp +++ b/adapter/properties.cpp @@ -69,26 +69,17 @@ using ProcessInfo = struct { uint32_t processQuota; }; -static int PropLock(pthread_mutex_t *propLock) -{ - return pthread_mutex_trylock(propLock); -} - -static void PropUnlock(pthread_mutex_t *propLock) -{ - pthread_mutex_unlock(propLock); -} - void PropertyGet(const std::string &key, char *value, int len) { if (len < HILOG_PROP_VALUE_MAX) { return; } + /* use OHOS interface */ } void PropertySet(const std::string &key, const char* value) { -/* use OHOS interface */ + /* use OHOS interface */ } std::string GetProgName() @@ -188,13 +179,13 @@ static void UnlockByProp(uint32_t propType) static void RefreshCacheBuf(PropertyCache *cache, const char *key) { -/* use OHOS interface */ + /* use OHOS interface */ } static bool CheckCache(const PropertyCache *cache) { return true; -/* use OHOS interface */ + /* use OHOS interface */ } static bool GetSwitchCache(bool isFirst, SwitchCache& switchCache, uint32_t propType, bool defaultValue) @@ -285,14 +276,14 @@ uint16_t GetGlobalLevel() int notLocked; if (!isFirstFlag.test_and_set() || CheckCache(&levelCache.cache)) { - notLocked = PropLock(&g_globalLevelLock); + notLocked = LockByProp(PROP_GLOBAL_LOG_LEVEL); if (!notLocked) { RefreshCacheBuf(&levelCache.cache, key.c_str()); if (sscanf_s(levelCache.cache.propertyValue, "%d", &levelCache.logLevel) <= 0) { - PropUnlock(&g_globalLevelLock); + UnlockByProp(PROP_GLOBAL_LOG_LEVEL); return HILOG_LEVEL_MIN; } - PropUnlock(&g_globalLevelLock); + UnlockByProp(PROP_GLOBAL_LOG_LEVEL); return levelCache.logLevel; } else { LogLevelCache tmpCache = {{nullptr, 0xffffffff, ""}, HILOG_LEVEL_MIN}; @@ -327,14 +318,14 @@ uint16_t GetDomainLevel(uint32_t domain) return levelCache->logLevel; } else { // exist domain if (CheckCache(&it->second->cache)) { // change - notLocked = PropLock(&g_domainLevelLock); + notLocked = LockByProp(PROP_DOMAIN_LOG_LEVEL); if (!notLocked) { RefreshCacheBuf(&it->second->cache, key.c_str()); if (sscanf_s(it->second->cache.propertyValue, "%d", &it->second->logLevel) <= 0) { - PropUnlock(&g_domainLevelLock); + UnlockByProp(PROP_DOMAIN_LOG_LEVEL); return HILOG_LEVEL_MIN; } - PropUnlock(&g_domainLevelLock); + UnlockByProp(PROP_DOMAIN_LOG_LEVEL); return it->second->logLevel; } else { LogLevelCache tmpCache = {{nullptr, 0xffffffff, ""}, HILOG_LEVEL_MIN}; @@ -371,14 +362,14 @@ uint16_t GetTagLevel(const std::string& tag) return levelCache->logLevel; } else { if (CheckCache(&it->second->cache)) { - notLocked = PropLock(&g_tagLevelLock); + notLocked = LockByProp(PROP_TAG_LOG_LEVEL); if (!notLocked) { RefreshCacheBuf(&it->second->cache, key.c_str()); if (sscanf_s(it->second->cache.propertyValue, "%d", &it->second->logLevel) <= 0) { - PropUnlock(&g_tagLevelLock); + UnlockByProp(PROP_TAG_LOG_LEVEL); return HILOG_LEVEL_MIN; } - PropUnlock(&g_tagLevelLock); + UnlockByProp(PROP_TAG_LOG_LEVEL); return it->second->logLevel; } else { LogLevelCache tmpCache = {{nullptr, 0xffffffff, ""}, HILOG_LEVEL_MIN}; diff --git a/adapter/properties.h b/adapter/properties.h index cebbaa1..42d1f7b 100644 --- a/adapter/properties.h +++ b/adapter/properties.h @@ -20,6 +20,7 @@ #include #include + static const int HILOG_PROP_VALUE_MAX = 92; using PropType = enum { diff --git a/frameworks/native/include/hilogtool_msg.h b/frameworks/native/include/hilogtool_msg.h index cd4b03c..fd0d524 100644 --- a/frameworks/native/include/hilogtool_msg.h +++ b/frameworks/native/include/hilogtool_msg.h @@ -238,7 +238,7 @@ typedef struct { std::string compressAlgStr; std::string fileSizeStr; std::string fileNumStr; - std::string filePathStr; + std::string fileNameStr; std::string jobIdStr; } LogPersistParam; typedef struct { diff --git a/services/hilogd/log_buffer.cpp b/services/hilogd/log_buffer.cpp index 7fd5327..70c694f 100644 --- a/services/hilogd/log_buffer.cpp +++ b/services/hilogd/log_buffer.cpp @@ -236,7 +236,7 @@ bool HilogBuffer::Query(LogReader* reader) size_t HilogBuffer::GetBuffLen(uint16_t logType) { if (logType >= LOG_TYPE_MAX) { - return 0; + return -1; } uint64_t buffSize = g_maxBufferSizeByType[logType]; return buffSize; diff --git a/services/hilogd/log_querier.cpp b/services/hilogd/log_querier.cpp index e08ed10..8ef90ac 100644 --- a/services/hilogd/log_querier.cpp +++ b/services/hilogd/log_querier.cpp @@ -135,7 +135,7 @@ void HandlePersistStartRequest(char* reqMsg, std::shared_ptr logReade pLogPersistStartRst->result = persister->Init(); persister->queryCondition.types = pLogPersistStartMsg->logType; persister->queryCondition.levels = DEFAULT_LOG_LEVEL; - if (pLogPersistStartRst->result == RET_FAIL) { + if (pLogPersistStartRst->result == RET_FAIL) { persister.reset(); } else { persister->Start(); @@ -284,7 +284,7 @@ void HandleBufferSizeRequest(char* reqMsg, std::shared_ptr logReader, uint32_t msgNum = 0; uint16_t msgLen = pBufferSizeReq->msgHeader.msgLen; uint16_t sendMsgLen = 0; - uint64_t buffLen; + int64_t buffLen; if (msgLen > sizeof(BuffSizeMsg) * LOG_TYPE_MAX) { return; diff --git a/services/hilogtool/log_controller.cpp b/services/hilogtool/log_controller.cpp index d8284f2..7cc1d50 100644 --- a/services/hilogtool/log_controller.cpp +++ b/services/hilogtool/log_controller.cpp @@ -366,7 +366,7 @@ int32_t LogPersistOp(SeqPacketSocketClient& controller, uint8_t msgCmd, LogPersi } pLogPersistStartMsg->logType = (0b01 << tmpType) | pLogPersistStartMsg->logType; } - pLogPersistStartMsg->jobId = (logPersistParam->jobIdStr == "") ? time(nullptr) + pLogPersistStartMsg->jobId = (logPersistParam->jobIdStr == "") ? 1 : stoi(logPersistParam->jobIdStr); pLogPersistStartMsg->compressType = (logPersistParam->compressTypeStr == "") ? STREAM : stoi(logPersistParam ->compressTypeStr); @@ -376,13 +376,15 @@ int32_t LogPersistOp(SeqPacketSocketClient& controller, uint8_t msgCmd, LogPersi logPersistParam->fileSizeStr); pLogPersistStartMsg->fileNum = (logPersistParam->fileNumStr == "") ? fileNumDefault : stoi(logPersistParam->fileNumStr); - if (logPersistParam->filePathStr == "") { - logPersistParam->filePathStr = "/data/misc/logd/log_" + to_string(time(nullptr)); + if (logPersistParam->fileNameStr == "") { + logPersistParam->fileNameStr = "/data/misc/logd/log_" + to_string(time(nullptr)); + } else { + logPersistParam->fileNameStr = "/data/misc/logd/" + logPersistParam->fileNameStr; } - if (logPersistParam->filePathStr.size() > FILE_PATH_MAX_LEN) { + if (logPersistParam->fileNameStr.size() > FILE_PATH_MAX_LEN) { return RET_FAIL; } - ret += strcpy_s(pLogPersistStartMsg->filePath, FILE_PATH_MAX_LEN, logPersistParam->filePathStr.c_str()); + ret += strcpy_s(pLogPersistStartMsg->filePath, FILE_PATH_MAX_LEN, logPersistParam->fileNameStr.c_str()); SetMsgHead(&pLogPersistStartReq->msgHeader, msgCmd, sizeof(LogPersistStartRequest)); controller.WriteAll(msgToSend, sizeof(LogPersistStartRequest)); break; diff --git a/services/hilogtool/main.cpp b/services/hilogtool/main.cpp index 8645f80..4d5bf13 100644 --- a/services/hilogtool/main.cpp +++ b/services/hilogtool/main.cpp @@ -78,8 +78,8 @@ static void Helper() " -e , --regex=\n" " show the logs which match the regular expression,\n" " is a regular expression.\n" - " -F , --path=\n" - " set log file path.\n" + " -F , --filename=\n" + " set log file name.\n" " -l , --length=\n" " set single log file size.\n" " -n , --number\n" @@ -103,6 +103,8 @@ static void Helper() " nsec display time by nano sec.\n" " year display the year.\n" " zone display the time zone.\n" + " -b , --baselevel=\n" + " set loggable level.\n" ); } @@ -195,7 +197,7 @@ int HilogEntry(int argc, char* argv[]) { "compress", required_argument, nullptr, 'c' }, { "stream", required_argument, nullptr, 'm' }, { "number", required_argument, nullptr, 'n' }, - { "path", required_argument, nullptr, 'F' }, + { "filename", required_argument, nullptr, 'F' }, { "private", required_argument, nullptr, 'p' }, { "domain", required_argument, nullptr, 'D' }, { "tag", required_argument, nullptr, 'T' }, @@ -314,7 +316,7 @@ int HilogEntry(int argc, char* argv[]) context.fileNumArgs = optarg; break; case 'F': - context.filePathArgs = optarg; + context.fileNameArgs = optarg; break; case 'j': context.jobIdArgs = optarg; @@ -393,7 +395,7 @@ int HilogEntry(int argc, char* argv[]) logPersistParam.compressAlgStr = context.algorithmArgs; logPersistParam.fileSizeStr = context.fileSizeArgs; logPersistParam.fileNumStr = context.fileNumArgs; - logPersistParam.filePathStr = context.filePathArgs; + logPersistParam.fileNameStr = context.fileNameArgs; logPersistParam.jobIdStr = context.jobIdArgs; if (context.logFileCtrlArgs == "start") { ret = LogPersistOp(controller, MC_REQ_LOG_PERSIST_START, &logPersistParam); -- Gitee From 926bf2a0d1bba0b0504ddd95d8727409a8b38a5e Mon Sep 17 00:00:00 2001 From: youyouyuai Date: Fri, 18 Jun 2021 09:41:31 +0000 Subject: [PATCH 2/3] add DEFAULT_JOBID Signed-off-by: youyouyuai --- services/hilogtool/log_controller.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/hilogtool/log_controller.cpp b/services/hilogtool/log_controller.cpp index 7cc1d50..37d6d94 100644 --- a/services/hilogtool/log_controller.cpp +++ b/services/hilogtool/log_controller.cpp @@ -37,6 +37,7 @@ using namespace std; const int MSG_MAX_LEN = 2048; const int LOG_PERSIST_FILE_SIZE = 4 * ONE_MB; const int LOG_PERSIST_FILE_NUM = 10; +const uint32_t DEFAULT_JOBID = 1; void SetMsgHead(MessageHeader* msgHeader, const uint8_t msgCmd, const uint16_t msgLen) { @@ -366,7 +367,7 @@ int32_t LogPersistOp(SeqPacketSocketClient& controller, uint8_t msgCmd, LogPersi } pLogPersistStartMsg->logType = (0b01 << tmpType) | pLogPersistStartMsg->logType; } - pLogPersistStartMsg->jobId = (logPersistParam->jobIdStr == "") ? 1 + pLogPersistStartMsg->jobId = (logPersistParam->jobIdStr == "") ? DEFAULT_JOBID : stoi(logPersistParam->jobIdStr); pLogPersistStartMsg->compressType = (logPersistParam->compressTypeStr == "") ? STREAM : stoi(logPersistParam ->compressTypeStr); -- Gitee From 1c2e1f0dbd95b40e1cc7fa058f20ad42e279c741 Mon Sep 17 00:00:00 2001 From: youyouyuai Date: Mon, 21 Jun 2021 02:09:28 +0000 Subject: [PATCH 3/3] revert log persist filename Signed-off-by: youyouyuai --- frameworks/native/include/hilogtool_msg.h | 2 +- services/hilogtool/log_controller.cpp | 10 ++++------ services/hilogtool/main.cpp | 10 +++++----- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/frameworks/native/include/hilogtool_msg.h b/frameworks/native/include/hilogtool_msg.h index fd0d524..cd4b03c 100644 --- a/frameworks/native/include/hilogtool_msg.h +++ b/frameworks/native/include/hilogtool_msg.h @@ -238,7 +238,7 @@ typedef struct { std::string compressAlgStr; std::string fileSizeStr; std::string fileNumStr; - std::string fileNameStr; + std::string filePathStr; std::string jobIdStr; } LogPersistParam; typedef struct { diff --git a/services/hilogtool/log_controller.cpp b/services/hilogtool/log_controller.cpp index 37d6d94..84ddbfc 100644 --- a/services/hilogtool/log_controller.cpp +++ b/services/hilogtool/log_controller.cpp @@ -377,15 +377,13 @@ int32_t LogPersistOp(SeqPacketSocketClient& controller, uint8_t msgCmd, LogPersi logPersistParam->fileSizeStr); pLogPersistStartMsg->fileNum = (logPersistParam->fileNumStr == "") ? fileNumDefault : stoi(logPersistParam->fileNumStr); - if (logPersistParam->fileNameStr == "") { - logPersistParam->fileNameStr = "/data/misc/logd/log_" + to_string(time(nullptr)); - } else { - logPersistParam->fileNameStr = "/data/misc/logd/" + logPersistParam->fileNameStr; + if (logPersistParam->filePathStr == "") { + logPersistParam->filePathStr = "/data/misc/logd/log_" + to_string(time(nullptr)); } - if (logPersistParam->fileNameStr.size() > FILE_PATH_MAX_LEN) { + if (logPersistParam->filePathStr.size() > FILE_PATH_MAX_LEN) { return RET_FAIL; } - ret += strcpy_s(pLogPersistStartMsg->filePath, FILE_PATH_MAX_LEN, logPersistParam->fileNameStr.c_str()); + ret += strcpy_s(pLogPersistStartMsg->filePath, FILE_PATH_MAX_LEN, logPersistParam->filePathStr.c_str()); SetMsgHead(&pLogPersistStartReq->msgHeader, msgCmd, sizeof(LogPersistStartRequest)); controller.WriteAll(msgToSend, sizeof(LogPersistStartRequest)); break; diff --git a/services/hilogtool/main.cpp b/services/hilogtool/main.cpp index 4d5bf13..36b54c5 100644 --- a/services/hilogtool/main.cpp +++ b/services/hilogtool/main.cpp @@ -78,8 +78,8 @@ static void Helper() " -e , --regex=\n" " show the logs which match the regular expression,\n" " is a regular expression.\n" - " -F , --filename=\n" - " set log file name.\n" + " -F , --path=\n" + " set log file path.\n" " -l , --length=\n" " set single log file size.\n" " -n , --number\n" @@ -197,7 +197,7 @@ int HilogEntry(int argc, char* argv[]) { "compress", required_argument, nullptr, 'c' }, { "stream", required_argument, nullptr, 'm' }, { "number", required_argument, nullptr, 'n' }, - { "filename", required_argument, nullptr, 'F' }, + { "path", required_argument, nullptr, 'F' }, { "private", required_argument, nullptr, 'p' }, { "domain", required_argument, nullptr, 'D' }, { "tag", required_argument, nullptr, 'T' }, @@ -316,7 +316,7 @@ int HilogEntry(int argc, char* argv[]) context.fileNumArgs = optarg; break; case 'F': - context.fileNameArgs = optarg; + context.filePathArgs = optarg; break; case 'j': context.jobIdArgs = optarg; @@ -395,7 +395,7 @@ int HilogEntry(int argc, char* argv[]) logPersistParam.compressAlgStr = context.algorithmArgs; logPersistParam.fileSizeStr = context.fileSizeArgs; logPersistParam.fileNumStr = context.fileNumArgs; - logPersistParam.fileNameStr = context.fileNameArgs; + logPersistParam.filePathStr = context.filePathArgs; logPersistParam.jobIdStr = context.jobIdArgs; if (context.logFileCtrlArgs == "start") { ret = LogPersistOp(controller, MC_REQ_LOG_PERSIST_START, &logPersistParam); -- Gitee