11
11
#define ESP_UTILS_LOG_TAG " Utils"
12
12
#endif
13
13
14
- #ifdef __cplusplus
15
-
16
- #include < cstdio>
17
- #include < cstdarg>
18
- #include < cstring>
19
- #include < functional>
20
- #include < mutex>
21
-
22
- extern " C" const char *esp_utils_log_extract_file_name (const char *file_path);
23
-
24
- namespace esp_utils {
25
-
26
- /* *
27
- * Class to handle logging
28
- */
29
- class Log {
30
- public:
31
- // Singleton pattern: Get the unique instance of the class
32
- static Log &getInstance ()
33
- {
34
- static Log instance;
35
- return instance;
36
- }
37
-
38
- // Templates and conditional compilation: Filter logs by different levels
39
- template <int level>
40
- void print (const char *file, int line, const char *func, const char *format, ...)
41
- {
42
- // Logs below the global level will not be compiled
43
- if constexpr (level >= ESP_UTILS_CONF_LOG_LEVEL) {
44
- // Mutex to avoid interleaved log messages
45
- std::lock_guard<std::mutex> lock (_mutex);
46
- // Use variadic arguments for formatted output
47
- va_list args;
48
- va_start (args, format);
49
- vsnprintf (_buffer, sizeof (_buffer), format, args);
50
- va_end (args);
51
- // Output log message
52
- printf (
53
- " [%c][%s][%s:%04d](%s): %s\n " , logLevelToChar (level), ESP_UTILS_LOG_TAG,
54
- esp_utils_log_extract_file_name (file), line, func, _buffer
55
- );
56
- }
57
- }
58
-
59
- private:
60
- Log () = default ;
61
-
62
- // Convert log level to string
63
- static constexpr char logLevelToChar (int level)
64
- {
65
- switch (level) {
66
- case ESP_UTILS_LOG_LEVEL_DEBUG: return ' D' ;
67
- case ESP_UTILS_LOG_LEVEL_INFO: return ' I' ;
68
- case ESP_UTILS_LOG_LEVEL_WARNING: return ' W' ;
69
- case ESP_UTILS_LOG_LEVEL_ERROR: return ' E' ;
70
- default : break ;
71
- }
72
- return ' ' ;
73
- }
74
-
75
- char _buffer[ESP_UTILS_CONF_LOG_BUFFER_SIZE];
76
- std::mutex _mutex;
77
- };
78
-
79
- } // namespace esp_utils
14
+ // #include <cstdio>
15
+ // #include <cstdarg>
16
+ // #include <cstring>
17
+ // #include <functional>
18
+ // #include <mutex>
19
+
20
+ // extern "C" const char *esp_utils_log_extract_file_name(const char *file_path);
21
+
22
+ // namespace esp_utils {
23
+
24
+ // /**
25
+ // * Class to handle logging
26
+ // */
27
+ // class Log {
28
+ // public:
29
+ // // Singleton pattern: Get the unique instance of the class
30
+ // static Log &getInstance()
31
+ // {
32
+ // static Log instance;
33
+ // return instance;
34
+ // }
35
+
36
+ // // Templates and conditional compilation: Filter logs by different levels
37
+ // template <int level>
38
+ // void print(const char *file, int line, const char *func, const char *format, ...)
39
+ // {
40
+ // // Logs below the global level will not be compiled
41
+ // if constexpr (level >= ESP_UTILS_CONF_LOG_LEVEL) {
42
+ // // Mutex to avoid interleaved log messages
43
+ // std::lock_guard<std::mutex> lock(_mutex);
44
+ // // Use variadic arguments for formatted output
45
+ // va_list args;
46
+ // va_start(args, format);
47
+ // vsnprintf(_buffer, sizeof(_buffer), format, args);
48
+ // va_end(args);
49
+ // // Output log message
50
+ // printf(
51
+ // "[%c][%s][%s:%04d](%s): %s\n", logLevelToChar(level), ESP_UTILS_LOG_TAG,
52
+ // esp_utils_log_extract_file_name(file), line, func, _buffer
53
+ // );
54
+ // }
55
+ // }
56
+
57
+ // private:
58
+ // Log() = default;
59
+
60
+ // // Convert log level to string
61
+ // static constexpr char logLevelToChar(int level)
62
+ // {
63
+ // switch (level) {
64
+ // case ESP_UTILS_LOG_LEVEL_DEBUG: return 'D';
65
+ // case ESP_UTILS_LOG_LEVEL_INFO: return 'I';
66
+ // case ESP_UTILS_LOG_LEVEL_WARNING: return 'W';
67
+ // case ESP_UTILS_LOG_LEVEL_ERROR: return 'E';
68
+ // default: break;
69
+ // }
70
+ // return ' ';
71
+ // }
72
+
73
+ // char _buffer[ESP_UTILS_CONF_LOG_BUFFER_SIZE];
74
+ // std::mutex _mutex;
75
+ // };
76
+
77
+ // } // namespace esp_utils
80
78
81
79
/* *
82
80
* Macros to simplify logging calls
83
81
*/
82
+ /*
84
83
#define ESP_UTILS_LOGD(format, ...) \
85
84
esp_utils::Log::getInstance().print<ESP_UTILS_LOG_LEVEL_DEBUG>(__FILE__, __LINE__, __func__, format, ##__VA_ARGS__)
86
85
#define ESP_UTILS_LOGI(format, ...) \
@@ -89,25 +88,21 @@ class Log {
89
88
esp_utils::Log::getInstance().print<ESP_UTILS_LOG_LEVEL_WARNING>(__FILE__, __LINE__, __func__, format, ##__VA_ARGS__)
90
89
#define ESP_UTILS_LOGE(format, ...) \
91
90
esp_utils::Log::getInstance().print<ESP_UTILS_LOG_LEVEL_ERROR>(__FILE__, __LINE__, __func__, format, ##__VA_ARGS__)
92
-
93
- /* *
94
- * Micros to log trace of function calls
95
- */
96
- #if ESP_UTILS_CONF_ENABLE_LOG_TRACE
97
- #define ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS () ESP_UTILS_LOGD(" (@%p) Enter" , this )
98
- #define ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS () ESP_UTILS_LOGD(" (@%p) Exit" , this )
99
- #else
100
- #define ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS ()
101
- #define ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS ()
102
- #endif
103
-
104
- #else
91
+ */
105
92
106
93
#include < stdio.h>
107
94
#include < string.h>
108
95
96
+ #ifdef __cplusplus
97
+ extern " C" {
98
+ #endif
99
+
109
100
const char *esp_utils_log_extract_file_name (const char *file_path);
110
101
102
+ #ifdef __cplusplus
103
+ }
104
+ #endif
105
+
111
106
#define ESP_UTILS_IMPL_LOGD (format, ...) printf(" [D][" ESP_UTILS_LOG_TAG " ][%s:%04d](%s): " format " \n " , \
112
107
esp_utils_log_extract_file_name (__FILE__), __LINE__, __func__, ##__VA_ARGS__)
113
108
#define ESP_UTILS_IMPL_LOGI (format, ...) printf(" [I][" ESP_UTILS_LOG_TAG " ][%s:%04d](%s): " format " \n " , \
@@ -137,8 +132,6 @@ const char *esp_utils_log_extract_file_name(const char *file_path);
137
132
#define ESP_UTILS_LOGW (format, ...) ESP_UTILS_LOG_LEVEL_LOCAL(ESP_UTILS_LOG_LEVEL_WARNING, format, ##__VA_ARGS__)
138
133
#define ESP_UTILS_LOGE (format, ...) ESP_UTILS_LOG_LEVEL_LOCAL(ESP_UTILS_LOG_LEVEL_ERROR, format, ##__VA_ARGS__)
139
134
140
- #endif // __cplusplus
141
-
142
135
/* *
143
136
* Micros to log trace of function calls
144
137
*/
@@ -149,3 +142,12 @@ const char *esp_utils_log_extract_file_name(const char *file_path);
149
142
#define ESP_UTILS_LOG_TRACE_ENTER ()
150
143
#define ESP_UTILS_LOG_TRACE_EXIT ()
151
144
#endif
145
+ #ifdef __cplusplus
146
+ #if ESP_UTILS_CONF_ENABLE_LOG_TRACE
147
+ #define ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS () ESP_UTILS_LOGD(" (@%p) Enter" , this )
148
+ #define ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS () ESP_UTILS_LOGD(" (@%p) Exit" , this )
149
+ #else
150
+ #define ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS ()
151
+ #define ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS ()
152
+ #endif
153
+ #endif
0 commit comments