1 /* 2 * Copyright (c) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef FOUNDATION_RESOURCESCHEDULE_STANDBY_SERVICE_UTILS_INCLUDE_STANDBY_SERVICE_LOG_H 17 #define FOUNDATION_RESOURCESCHEDULE_STANDBY_SERVICE_UTILS_INCLUDE_STANDBY_SERVICE_LOG_H 18 19 #include <string> 20 21 #include "hilog/log.h" 22 23 namespace OHOS { 24 namespace DevStandbyMgr { 25 #ifndef STANDBYSERVICE_LOG_DOMAIN 26 #define STANDBYSERVICE_LOG_DOMAIN 0xD001718 27 #endif 28 29 #ifndef STANDBYSERVICE_LOG_TAG 30 #define STANDBYSERVICE_LOG_TAG "StandbyService" 31 #endif 32 33 #ifdef __aarch64__ 34 #define SPUBI64 "%{public}ld" 35 #define SPUBSize "%{public}lu" 36 #define SPUBU64 "%{public}lu" 37 #else 38 #define SPUBI64 "%{public}lld" 39 #define SPUBSize "%{public}u" 40 #define SPUBU64 "%{public}llu" 41 #endif 42 43 enum class StandbyServiceLogLevel : uint8_t { DEBUG = 0, INFO, WARN, ERROR, FATAL }; 44 45 static constexpr OHOS::HiviewDFX::HiLogLabel STANDBYSERVICE_LABEL = {LOG_CORE, STANDBYSERVICE_LOG_DOMAIN, 46 STANDBYSERVICE_LOG_TAG}; 47 48 class StandbyServiceLog { 49 public: 50 StandbyServiceLog() = delete; 51 ~StandbyServiceLog() = delete; 52 53 static bool JudgeLevel(const StandbyServiceLogLevel& level); 54 SetLogLevel(const StandbyServiceLogLevel & level)55 static void SetLogLevel(const StandbyServiceLogLevel& level) 56 { 57 level_ = level; 58 } 59 GetLogLevel()60 static const StandbyServiceLogLevel& GetLogLevel() 61 { 62 return level_; 63 } 64 65 static std::string GetCurrFileName(const char *str); 66 67 private: 68 static StandbyServiceLogLevel level_; 69 }; 70 71 #define STANDBYSERVICE_PRINT_LOG(LEVEL, Level, fmt, ...) \ 72 if (StandbyServiceLog::JudgeLevel(StandbyServiceLogLevel::LEVEL)) \ 73 OHOS::HiviewDFX::HiLog::Level(STANDBYSERVICE_LABEL, \ 74 "[%{public}s(%{public}s):%{public}d] " fmt, \ 75 StandbyServiceLog::GetCurrFileName(__FILE__).c_str(), \ 76 __FUNCTION__, \ 77 __LINE__, \ 78 ##__VA_ARGS__) 79 80 #define STANDBYSERVICE_LOGD(fmt, ...) STANDBYSERVICE_PRINT_LOG(DEBUG, Debug, fmt, ##__VA_ARGS__) 81 #define STANDBYSERVICE_LOGI(fmt, ...) STANDBYSERVICE_PRINT_LOG(INFO, Info, fmt, ##__VA_ARGS__) 82 #define STANDBYSERVICE_LOGW(fmt, ...) STANDBYSERVICE_PRINT_LOG(WARN, Warn, fmt, ##__VA_ARGS__) 83 #define STANDBYSERVICE_LOGE(fmt, ...) STANDBYSERVICE_PRINT_LOG(ERROR, Error, fmt, ##__VA_ARGS__) 84 #define STANDBYSERVICE_LOGF(fmt, ...) STANDBYSERVICE_PRINT_LOG(FATAL, Fatal, fmt, ##__VA_ARGS__) 85 } // namespace DevStandbyMgr 86 } // namespace OHOS 87 #endif // FOUNDATION_RESOURCESCHEDULE_STANDBY_SERVICE_UTILS_INCLUDE_STANDBY_SERVICE_LOG_H