commit fe25fdda6ab46cac7ab9003b0388a23e6d58f3f7 Author: James Date: Thu Dec 29 18:49:56 2022 +0000 init diff --git a/src/logger.cpp b/src/logger.cpp new file mode 100644 index 0000000..f6c970c --- /dev/null +++ b/src/logger.cpp @@ -0,0 +1,64 @@ +#include "logger.h" +#define LOGGER_BUFFER_SIZE 4096 + +//Levels: 0none, 1error, 2warning, 3info, 4debug, 5verbose + +static char buffer[LOGGER_BUFFER_SIZE]=""; + +void add_to_buff(char *msg); + +void logger(byte level, const char* format, ...) +{ + if(level>settings.log_level_local && level>settings.log_level_remote){ + return; + } + static char msg[256]; + va_list argptr; + va_start(argptr, format); + vsnprintf(msg,256, format, argptr); + va_end(argptr); + + static char tmp[256]; + snprintf(tmp,256,"%d[%d] (%d) %s\r\n",millis(),level,esp_get_free_heap_size(),msg); + + if(level<=settings.log_level_local){ + Serial.print(tmp); + } + if(level<=settings.log_level_remote){ + add_to_buff(tmp); + } +} + +void add_to_buff(char *msg){ + if(strlen(buffer)+strlen(msg)+1>=LOGGER_BUFFER_SIZE){ + File log=SPIFFS.open("/log.txt","a"); + log.print(buffer); + log.close(); + buffer[0]=0; + logger(3,"Log buffer full, written to SPIFFS"); + } + strcpy(buffer+strlen(buffer),msg); +} + +long logger_get_size(){ + long s=0; + File file=SPIFFS.open("/log.txt"); + s+=file.size(); + file.close(); + s+=strlen(buffer); + return s; +} + +void logger_dump(Print *dest){ + File file=SPIFFS.open("/log.txt"); + while(file.available()){ + dest->write(file.read()); + } + file.close(); + dest->print(buffer); +} + +void logger_clear(){ + buffer[0]=0; + SPIFFS.remove("/log.txt"); +} diff --git a/src/logger.h b/src/logger.h new file mode 100644 index 0000000..e129352 --- /dev/null +++ b/src/logger.h @@ -0,0 +1,13 @@ +#ifndef LOGGER_H +#define LOGGER_H + +#include +#include "filesystem.h" +#include "settings.h" + +void logger(byte level, const char* format, ...); +long logger_get_size(); +void logger_clear(); +void logger_dump(Print *dest); + +#endif