Resource Tuner
Loading...
Searching...
No Matches
Logger.h
1// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
2// SPDX-License-Identifier: BSD-3-Clause-Clear
3
4#ifndef LOGGER_H
5#define LOGGER_H
6
7#include <string>
8#include <ctime>
9#include <chrono>
10#include <fstream>
11#include <cstdarg>
12#include <sstream>
13#include <syslog.h>
14
15#define LOGD(tag, message) Logger::log(LOG_DEBUG, tag, __func__, message)
16#define LOGI(tag, message) Logger::log(LOG_INFO, tag, __func__, message)
17#define LOGE(tag, message) Logger::log(LOG_ERR, tag, __func__, message)
18#define TYPELOGV(type, args...) Logger::typeLog(type, __func__, args)
19#define TYPELOGD(type) Logger::typeLog(type, __func__)
20
21enum RedirectOptions {
22 LOG_TOFILE,
23 LOG_TOSYSLOG
24};
25
26enum CommonMessageTypes {
27 ERRNO_LOG,
28 CLIENT_ALLOCATION_FAILURE,
29 PROPERTY_RETRIEVAL_FAILED,
30 PULSE_MONITOR_INIT_FAILED,
31 GARBAGE_COLLECTOR_INIT_FAILED,
32 MEMORY_POOL_INVALID_BLOCK_SIZE,
33 MEMORY_POOL_BLOCK_RETRIEVAL_FAILURE,
34 MEMORY_POOL_ALLOCATION_FAILURE,
35 NOTIFY_MODULE_ENABLED,
36 NOTIFY_MODULE_NOT_ENABLED,
37 SYSTEM_THREAD_CREATION_FAILURE,
38 SYSTEM_THREAD_NOT_JOINABLE,
39 MODULE_INIT_FAILED,
40 REQUEST_MEMORY_ALLOCATION_FAILURE,
41 REQUEST_MEMORY_ALLOCATION_FAILURE_HANDLE,
42 LISTENER_THREAD_CREATION_SUCCESS,
43 LISTENER_THREAD_CREATION_FAILURE,
44 NOTIFY_EXTENSIONS_LIB_NOT_PRESENT,
45 NOTIFY_EXTENSIONS_LOAD_FAILED,
46 NOTIFY_EXTENSIONS_LIB_LOADED_SUCCESS,
47 REQUEST_PARSING_FAILURE,
48 META_CONFIG_PARSE_FAILURE,
49 THREAD_POOL_CREATION_FAILURE,
50 THREAD_POOL_INIT_FAILURE,
51 THREAD_POOL_THREAD_ALLOCATION_FAILURE,
52 THREAD_POOL_THREAD_CREATION_FAILURE,
53 THREAD_POOL_THREAD_TERMINATED,
54 THREAD_POOL_ENQUEUE_TASK_FAILURE,
55 THREAD_POOL_FULL_ALERT,
56 TIMER_START_FAILURE,
57 VERIFIER_INVALID_OPCODE,
58 VERIFIER_INVALID_DEVICE_MODE,
59 VERIFIER_INVALID_PRIORITY,
60 VERIFIER_VALUE_OUT_OF_BOUNDS,
61 VERIFIER_INVALID_PERMISSION,
62 VERIFIER_NOT_SUFFICIENT_PERMISSION,
63 VERIFIER_LOGICAL_TO_PHYSICAL_MAPPING_FAILED,
64 VERIFIER_REQUEST_VALIDATED,
65 VERIFIER_STATUS_FAILURE,
66 VERIFIER_UNSUPPORTED_SIGNAL_TUNING,
67 VERIFIER_NOT_SUFFICIENT_SIGNAL_ACQ_PERMISSION,
68 VERIFIER_TARGET_CHECK_FAILED,
69 VERIFIER_CGROUP_NOT_FOUND,
70 VERIFIER_INVALID_LOGICAL_CORE,
71 VERIFIER_INVALID_LOGICAL_CLUSTER,
72 NOTIFY_COCO_TABLE_INSERT_START,
73 NOTIFY_COCO_TABLE_INSERT_SUCCESS,
74 NOTIFY_COCO_TABLE_UPDATE_START,
75 NOTIFY_COCO_TABLE_REMOVAL_START,
76 NOTIFY_COCO_TABLE_REQUEST_EXPIRY,
77 NOTIFY_COCO_TABLE_WRITE,
78 RATE_LIMITER_RATE_LIMITED,
79 RATE_LIMITER_GLOBAL_RATE_LIMIT_HIT,
80 YAML_PARSE_ERROR,
81 NOTIFY_RESOURCE_TUNER_INIT_START,
82 NOTIFY_CURRENT_TARGET_NAME,
83 RESOURCE_TUNER_DAEMON_CREATION_FAILURE,
84 NOTIFY_PARSING_START,
85 NOTIFY_PARSING_SUCCESS,
86 NOTIFY_PARSING_FAILURE,
87 NOTIFY_CUSTOM_CONFIG_FILE,
88 NOTIFY_PARSER_FILE_NOT_FOUND,
89 LOGICAL_TO_PHYSICAL_MAPPING_GEN_FAILURE,
90 LOGICAL_TO_PHYSICAL_MAPPING_GEN_SUCCESS,
91 SIGNAL_REGISTRY_SIGNAL_NOT_FOUND,
92 SIGNAL_REGISTRY_PARSING_FAILURE,
93 RESOURCE_REGISTRY_RESOURCE_NOT_FOUND,
94 RESOURCE_REGISTRY_PARSING_FAILURE,
95 CLIENT_ENTRY_CREATION_FAILURE,
96 REQUEST_MANAGER_DUPLICATE_FOUND,
97 REQUEST_MANAGER_REQUEST_NOT_ACTIVE,
98 EXT_FEATURE_CONFIGS_ELEM_LIB_OPEN_FAILED,
99 EXT_FEATURE_ROUTINE_NOT_DEFINED,
100 CORE_COUNT_EXTRACTION_FAILED,
101 CLUSTER_CPU_LIST_EXTRACTION_FAILED,
102 CLUSTER_CPU_CAPACITY_EXTRACTION_FAILED,
103 NOTIFY_NODE_WRITE,
104 GENERIC_CALL_FAILURE_LOG,
105};
106
115class Logger {
116private:
117 static int32_t mLowestLogLevel;
118 static int8_t mLevelSpecificLogging;
119 static RedirectOptions mRedirectOutputTo;
120
121 static std::string getTimestamp();
122 static std::string levelToString(int32_t level);
123
124public:
138 static void configure(int32_t level, int8_t levelSpecificLogging, RedirectOptions redirectOutputTo);
139
145 static void log(int32_t level, const std::string& tag, const std::string& funcName, const std::string& message);
146 static void typeLog(CommonMessageTypes type, const std::string& funcName, ...);
147
148 static int32_t decodeLogLevel(const std::string level);
149};
150
151#endif
Logger.
Definition Logger.h:115
static void log(int32_t level, const std::string &tag, const std::string &funcName, const std::string &message)
Responsible for actually Logging a Message to the desired Medium (file or syslog)
static void configure(int32_t level, int8_t levelSpecificLogging, RedirectOptions redirectOutputTo)
Configure the Logger.