JXCT Soil Sensor 7-in-1 3.10.1
IoT система мониторинга почвы на базе ESP32
Загрузка...
Поиск...
Не найдено
logger.h
См. документацию.
1
6#ifndef LOGGER_H
7#define LOGGER_H
8
9#ifdef TEST_BUILD
10#include "../test/stubs/esp32_stubs.h"
11#else
12#include <Arduino.h>
13#endif
14#include <array>
15#include <utility>
16
17// Уровни логгирования
18enum LogLevel : std::uint8_t
19{
23 LOG_DEBUG = 3
24};
25
26// Цвета для заголовков логгирования
27enum class LogColor : std::uint8_t
28{
29 RED = 0,
30 GREEN = 1,
31 YELLOW = 2,
32 BLUE = 3,
33 MAGENTA = 4,
34 CYAN = 5,
35 WHITE = 6,
36 CYAN_DEFAULT = 7 // Уникальное значение
37};
38
39// Текущий уровень логгирования (можно менять)
41
42// Символы для разных типов сообщений
43#define LOG_SYMBOL_ERROR "❌"
44#define LOG_SYMBOL_WARN "⚠️ "
45#define LOG_SYMBOL_INFO "ℹ️ "
46#define LOG_SYMBOL_DEBUG "🔧"
47#define LOG_SYMBOL_SUCCESS "✅"
48#define LOG_SYMBOL_SENSOR "📡"
49#define LOG_SYMBOL_WIFI "📶"
50#define LOG_SYMBOL_MQTT "🌐"
51#define LOG_SYMBOL_HTTP "🌍"
52
53// Цвета ANSI для терминала
54#define COLOR_RED "\033[31m"
55#define COLOR_GREEN "\033[32m"
56#define COLOR_YELLOW "\033[33m"
57#define COLOR_BLUE "\033[34m"
58#define COLOR_MAGENTA "\033[35m"
59#define COLOR_CYAN "\033[36m"
60#define COLOR_WHITE "\033[37m"
61#define COLOR_RESET "\033[0m"
62
63// Безопасные helper функции для форматирования
64String formatLogMessage(const String& message);
65
66// Основные функции логгирования (String версии)
67void logError(const String& message);
68void logWarn(const String& message);
69void logInfo(const String& message);
70void logDebug(const String& message);
71void logSuccess(const String& message);
72void logSensor(const String& message);
73void logWiFi(const String& message);
74void logMQTT(const String& message);
75void logHTTP(const String& message);
76void logSystem(const String& message);
77void logData(const String& message);
78
79// Современная C++ альтернатива с template parameter pack
80// cppcheck-suppress wrongPrintfScanfArgNum
81template <typename... Args>
82String formatLogMessageSafe(const char* format, Args&&... args)
83{
84 std::array<char, 512> buffer;
85 // NOLINTNEXTLINE(cppcoreguidelines-pro-type-vararg, hicpp-vararg)
86 int result = snprintf(buffer.data(), buffer.size(), format, std::forward<Args>(args)...);
87 if (result < 0)
88 {
89 return String("LOG FORMAT ERROR");
90 }
91 if (result < static_cast<int>(buffer.size()))
92 {
93 return String(buffer.data());
94 }
95 buffer[buffer.size() - 1] = '\0';
96 return String(buffer.data());
97}
98
99template <typename... Args>
100void logErrorSafe(const char* format, Args&&... args)
101{
102 logError(formatLogMessageSafe(format, std::forward<Args>(args)...));
103}
104
105template <typename... Args>
106void logWarnSafe(const char* format, Args&&... args)
107{
108 logWarn(formatLogMessageSafe(format, std::forward<Args>(args)...));
109}
110
111template <typename... Args>
112void logInfoSafe(const char* format, Args&&... args)
113{
114 logInfo(formatLogMessageSafe(format, std::forward<Args>(args)...));
115}
116
117template <typename... Args>
118void logDebugSafe(const char* format, Args&&... args)
119{
120 logDebug(formatLogMessageSafe(format, std::forward<Args>(args)...));
121}
122
123template <typename... Args>
124void logSuccessSafe(const char* format, Args&&... args)
125{
126 logSuccess(formatLogMessageSafe(format, std::forward<Args>(args)...));
127}
128
129template <typename... Args>
130void logSensorSafe(const char* format, Args&&... args)
131{
132 logSensor(formatLogMessageSafe(format, std::forward<Args>(args)...));
133}
134
135template <typename... Args>
136void logWiFiSafe(const char* format, Args&&... args)
137{
138 logWiFi(formatLogMessageSafe(format, std::forward<Args>(args)...));
139}
140
141template <typename... Args>
142void logMQTTSafe(const char* format, Args&&... args)
143{
144 logMQTT(formatLogMessageSafe(format, std::forward<Args>(args)...));
145}
146
147template <typename... Args>
148void logHTTPSafe(const char* format, Args&&... args)
149{
150 logHTTP(formatLogMessageSafe(format, std::forward<Args>(args)...));
151}
152
153template <typename... Args>
154void logSystemSafe(const char* format, Args&&... args)
155{
156 logSystem(formatLogMessageSafe(format, std::forward<Args>(args)...));
157}
158
159template <typename... Args>
160void logDataSafe(const char* format, Args&&... args)
161{
162 logData(formatLogMessageSafe(format, std::forward<Args>(args)...));
163}
164
165// Специальные функции
166void logSeparator();
167void logNewline();
168void logMemoryUsage();
169void logSystemInfo();
170void logUptime();
171void logWiFiStatus();
172
173// Функции для работы с цветами
174void setLogColor(LogColor color);
175void resetLogColor();
176const char* getColorCode(LogColor color);
177
178// Утилиты
179void printHeader(const String& title, LogColor color = LogColor::CYAN_DEFAULT);
180void printSubHeader(const String& title, LogColor color = LogColor::BLUE);
181void printTimeStamp();
182
183// Алиасы для обратной совместимости
184#define logPrintHeader printHeader
185#define logPrintSeparator(symbol, length) logSeparator()
186#define logPrintBanner(text) printHeader(String(text), LogColor::CYAN)
187
188#endif // LOGGER_H
void logUptime()
Definition logger.cpp:221
LogLevel currentLogLevel
Definition logger.cpp:13
void logHTTPSafe(const char *format, Args &&... args)
Definition logger.h:148
LogColor
Definition logger.h:28
void logSuccess(const String &message)
Definition logger.cpp:92
void logSeparator()
Definition logger.cpp:184
void logSystemInfo()
Definition logger.cpp:208
void logInfo(const String &message)
Definition logger.cpp:66
void printHeader(const String &title, LogColor color=LogColor::CYAN_DEFAULT)
Definition logger.cpp:277
LogLevel
Definition logger.h:19
@ LOG_ERROR
Definition logger.h:20
@ LOG_INFO
Definition logger.h:22
@ LOG_DEBUG
Definition logger.h:23
@ LOG_WARN
Definition logger.h:21
void logDataSafe(const char *format, Args &&... args)
Definition logger.h:160
void printSubHeader(const String &title, LogColor color=LogColor::BLUE)
Definition logger.cpp:286
void logError(const String &message)
Definition logger.cpp:40
void logWarn(const String &message)
Definition logger.cpp:53
String formatLogMessage(const String &message)
Definition logger.cpp:34
void logInfoSafe(const char *format, Args &&... args)
Definition logger.h:112
void logHTTP(const String &message)
Definition logger.cpp:144
void logSuccessSafe(const char *format, Args &&... args)
Definition logger.h:124
void logData(const String &message)
Definition logger.cpp:170
void logSystem(const String &message)
Definition logger.cpp:157
void logDebug(const String &message)
Definition logger.cpp:79
void logMemoryUsage()
Definition logger.cpp:194
const char * getColorCode(LogColor color)
Definition logger.cpp:251
void setLogColor(LogColor color)
Definition logger.cpp:241
void logWiFi(const String &message)
Definition logger.cpp:118
void resetLogColor()
Definition logger.cpp:246
void logWiFiStatus()
Definition logger.cpp:226
void logNewline()
Definition logger.cpp:189
void logMQTTSafe(const char *format, Args &&... args)
Definition logger.h:142
String formatLogMessageSafe(const char *format, Args &&... args)
Definition logger.h:82
void logWarnSafe(const char *format, Args &&... args)
Definition logger.h:106
void logSensor(const String &message)
Definition logger.cpp:105
void logErrorSafe(const char *format, Args &&... args)
Definition logger.h:100
void logMQTT(const String &message)
Definition logger.cpp:131
void logSystemSafe(const char *format, Args &&... args)
Definition logger.h:154
void logWiFiSafe(const char *format, Args &&... args)
Definition logger.h:136
void logDebugSafe(const char *format, Args &&... args)
Definition logger.h:118
void logSensorSafe(const char *format, Args &&... args)
Definition logger.h:130
void printTimeStamp()
Definition logger.cpp:295