-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlogger.cpp
More file actions
47 lines (35 loc) · 1.18 KB
/
logger.cpp
File metadata and controls
47 lines (35 loc) · 1.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "logger.hpp"
#include <cstdio>
#include <iostream>
#include <esp_log.h>
#include "mqtt.hpp"
LogLevel Logger::global_log_level = LogLevel::Debug;
std::string Logger::mqtt_topic;
bool Logger::mqtt_enabled = false;
void Logger::initialize(LogLevel log_level) {
global_log_level = log_level;
esp_log_set_vprintf(vprintf_esp_message);
}
void Logger::initialize(LogLevel log_level, std::string target_mqtt_topic, bool mqtt_logging_enabled) {
initialize(log_level);
mqtt_topic = std::move(target_mqtt_topic);
mqtt_enabled = mqtt_logging_enabled;
}
void Logger::set_mqtt_logging(bool enabled) {
mqtt_enabled = enabled;
}
int Logger::vprintf_esp_message(const char *message, va_list args) {
auto length = std::vsnprintf(nullptr, 0, message, args);
std::string string_message(length + 1, '\0');
auto characters_written = std::vsprintf(&string_message[0], message, args);
write_message(fmt::format("[ESP] {}", string_message));
return characters_written;
}
void Logger::write_message(const std::string &message) {
std::cout << message;
if (mqtt_enabled) {
MQTTClient::publish(mqtt_topic, message, false, 0);
}
}
Logger::Logger(const std::string &name) : _tag("[" + name + "]") {
}