This commit is contained in:
James 2022-12-29 18:49:56 +00:00
commit fe25fdda6a
2 changed files with 77 additions and 0 deletions

64
src/logger.cpp Normal file
View File

@ -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");
}

13
src/logger.h Normal file
View File

@ -0,0 +1,13 @@
#ifndef LOGGER_H
#define LOGGER_H
#include <Arduino.h>
#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