Sensor3/lib/patrix/log.cpp

60 lines
1.3 KiB
C++

#include <HardwareSerial.h>
#include "log.h"
#include "mqtt.h"
bool debugEnabled = false;
void getDateTime(char *buffer, size_t size) {
time_t now;
time(&now);
tm time{};
localtime_r(&now, &time);
strftime(buffer, size, "%Y-%m-%d %H:%M:%S %z", &time);
}
void log(const char *level, const char *module, const char *format, va_list vl) {
char datetime[26];
getDateTime(datetime, sizeof datetime);
char header[50];
snprintf(header, sizeof header, " | %-5s | %-15s | ", level, module);
char message[500];
vsnprintf(message, sizeof message, format, vl);
const size_t len = Serial.print(datetime) + Serial.print(header) + Serial.print(message) + Serial.println();
mqttPublishLog(len, datetime, header, message);
}
void debug(const char *module, const char *format, ...) {
if (!debugEnabled) {
return;
}
va_list vl;
va_start(vl, format);
log("DEBUG", module, format, vl);
va_end(vl);
}
void info(const char *module, const char *format, ...) {
va_list vl;
va_start(vl, format);
log("INFO", module, format, vl);
va_end(vl);
}
void error(const char *module, const char *format, ...) {
va_list vl;
va_start(vl, format);
log("ERROR", module, format, vl);
va_end(vl);
}
void setDebugEnabled(const bool enabled) {
debugEnabled = enabled;
}
bool isDebugEnabled() {
return debugEnabled;
}