Rename web_log to log_buffer

This commit is contained in:
Theo Arends 2020-12-18 16:30:37 +01:00
parent 93c7f7bb36
commit 2eb4eef08c
6 changed files with 41 additions and 45 deletions

View File

@ -1909,14 +1909,14 @@ void Syslog(void)
WiFi.hostByName(SettingsText(SET_SYSLOG_HOST), syslog_host_addr); // If sleep enabled this might result in exception so try to do it once using hash
}
if (PortUdp.beginPacket(syslog_host_addr, Settings.syslog_port)) {
char syslog_preamble[64]; // Hostname + Id
char syslog_preamble[64]; // Hostname + Id
snprintf_P(syslog_preamble, sizeof(syslog_preamble), PSTR("%s ESP-"), NetworkHostname());
memmove(TasmotaGlobal.log_data + strlen(syslog_preamble), TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data) - strlen(syslog_preamble));
TasmotaGlobal.log_data[sizeof(TasmotaGlobal.log_data) -1] = '\0';
memcpy(TasmotaGlobal.log_data, syslog_preamble, strlen(syslog_preamble));
PortUdp_write(TasmotaGlobal.log_data, strlen(TasmotaGlobal.log_data));
PortUdp.endPacket();
delay(1); // Add time for UDP handling (#5512)
delay(1); // Add time for UDP handling (#5512)
} else {
TasmotaGlobal.syslog_level = 0;
TasmotaGlobal.syslog_timer = SYSLOG_TIMER;
@ -1928,7 +1928,7 @@ void SyslogAsync(void) {
static uint32_t counter = 1;
if (!TasmotaGlobal.syslog_level ||
(counter == TasmotaGlobal.web_log_index) ||
(counter == TasmotaGlobal.log_buffer_pointer) ||
TasmotaGlobal.global_state.network_down) { return; }
do {
@ -1943,8 +1943,8 @@ void SyslogAsync(void) {
}
counter++;
counter &= 0xFF;
if (!counter) { counter++; } // Skip 0 as it is not allowed
} while (counter != TasmotaGlobal.web_log_index);
if (!counter) { counter++; } // Skip 0 as it is not allowed
} while (counter != TasmotaGlobal.log_buffer_pointer);
}
uint32_t GetLog(uint32_t idx, char** entry_pp, size_t* len_p) {
@ -1952,21 +1952,21 @@ uint32_t GetLog(uint32_t idx, char** entry_pp, size_t* len_p) {
size_t len = 0;
uint32_t loglevel = 0;
if (idx) {
char* it = TasmotaGlobal.web_log;
char* it = TasmotaGlobal.log_buffer;
do {
uint32_t cur_idx = *it;
it++;
size_t tmp = strchrspn(it, '\1');
tmp++; // Skip terminating '\1'
if (cur_idx == idx) { // Found the requested entry
tmp++; // Skip terminating '\1'
if (cur_idx == idx) { // Found the requested entry
loglevel = *it - '0';
it++; // Skip loglevel
it++; // Skip loglevel
len = tmp -1;
entry_p = it;
break;
}
it += tmp;
} while (it < TasmotaGlobal.web_log + WEB_LOG_SIZE && *it != '\0');
} while (it < TasmotaGlobal.log_buffer + LOG_BUFFER_SIZE && *it != '\0');
}
*entry_pp = entry_p;
*len_p = len;
@ -1988,28 +1988,28 @@ void AddLog(uint32_t loglevel) {
uint32_t highest_loglevel = Settings.weblog_level;
if (Settings.mqttlog_level > highest_loglevel) { highest_loglevel = Settings.mqttlog_level; }
if (TasmotaGlobal.syslog_level > highest_loglevel) { highest_loglevel = TasmotaGlobal.syslog_level; }
if ((loglevel <= highest_loglevel) && // Log only when needed
if ((loglevel <= highest_loglevel) && // Log only when needed
(TasmotaGlobal.masterlog_level <= highest_loglevel)) {
// Delimited, zero-terminated buffer of log lines.
// Each entry has this format: [index][loglevel][log data]['\1']
TasmotaGlobal.web_log_index &= 0xFF;
if (!TasmotaGlobal.web_log_index) {
TasmotaGlobal.web_log_index++; // Index 0 is not allowed as it is the end of char string
TasmotaGlobal.log_buffer_pointer &= 0xFF;
if (!TasmotaGlobal.log_buffer_pointer) {
TasmotaGlobal.log_buffer_pointer++; // Index 0 is not allowed as it is the end of char string
}
while (TasmotaGlobal.web_log_index == TasmotaGlobal.web_log[0] || // If log already holds the next index, remove it
strlen(TasmotaGlobal.web_log) + strlen(TasmotaGlobal.log_data) + strlen(mxtime) + 4 > WEB_LOG_SIZE) // 4 = web_log_index + '\1' + '\0'
while (TasmotaGlobal.log_buffer_pointer == TasmotaGlobal.log_buffer[0] || // If log already holds the next index, remove it
strlen(TasmotaGlobal.log_buffer) + strlen(TasmotaGlobal.log_data) + strlen(mxtime) + 4 > LOG_BUFFER_SIZE) // 4 = log_buffer_pointer + '\1' + '\0'
{
char* it = TasmotaGlobal.web_log;
it++; // Skip web_log_index
it += strchrspn(it, '\1'); // Skip log line
it++; // Skip delimiting "\1"
memmove(TasmotaGlobal.web_log, it, WEB_LOG_SIZE -(it-TasmotaGlobal.web_log)); // Move buffer forward to remove oldest log line
char* it = TasmotaGlobal.log_buffer;
it++; // Skip log_buffer_pointer
it += strchrspn(it, '\1'); // Skip log line
it++; // Skip delimiting "\1"
memmove(TasmotaGlobal.log_buffer, it, LOG_BUFFER_SIZE -(it-TasmotaGlobal.log_buffer)); // Move buffer forward to remove oldest log line
}
snprintf_P(TasmotaGlobal.web_log, sizeof(TasmotaGlobal.web_log), PSTR("%s%c%c%s%s\1"),
TasmotaGlobal.web_log, TasmotaGlobal.web_log_index++, '0'+loglevel, mxtime, TasmotaGlobal.log_data);
TasmotaGlobal.web_log_index &= 0xFF;
if (!TasmotaGlobal.web_log_index) {
TasmotaGlobal.web_log_index++; // Index 0 is not allowed as it is the end of char string
snprintf_P(TasmotaGlobal.log_buffer, sizeof(TasmotaGlobal.log_buffer), PSTR("%s%c%c%s%s\1"),
TasmotaGlobal.log_buffer, TasmotaGlobal.log_buffer_pointer++, '0'+loglevel, mxtime, TasmotaGlobal.log_data);
TasmotaGlobal.log_buffer_pointer &= 0xFF;
if (!TasmotaGlobal.log_buffer_pointer) {
TasmotaGlobal.log_buffer_pointer++; // Index 0 is not allowed as it is the end of char string
}
}
TasmotaGlobal.prepped_loglevel = 0;

View File

@ -86,7 +86,7 @@ struct {
uint32_t blink_timer; // Power cycle timer
uint32_t backlog_timer; // Timer for next command in backlog
uint32_t loop_load_avg; // Indicative loop load average
uint32_t web_log_index; // Index in Web log buffer
uint32_t log_buffer_pointer; // Index in log buffer
uint32_t uptime; // Counting every second until 4294967295 = 130 year
power_t power; // Current copy of Settings.power
@ -169,7 +169,7 @@ struct {
char mqtt_topic[TOPSZ]; // Composed MQTT topic
char mqtt_data[MESSZ]; // MQTT publish buffer and web page ajax buffer
char log_data[LOGSZ]; // Logging
char web_log[WEB_LOG_SIZE]; // Web log buffer
char log_buffer[LOG_BUFFER_SIZE]; // Web log buffer
} TasmotaGlobal;
#ifdef SUPPORT_IF_STATEMENT

View File

@ -209,11 +209,7 @@ String EthernetMacAddress(void);
#define WS2812_LEDS 30 // [Pixels] Number of LEDs
#endif
//#ifdef USE_MQTT_TLS // Set to 4000 on 20200922 per #9305
// const uint16_t WEB_LOG_SIZE = 2000; // Max number of characters in weblog
//#else
const uint16_t WEB_LOG_SIZE = 4000; // Max number of characters in weblog
//#endif
const uint16_t LOG_BUFFER_SIZE = 4000; // Max number of characters in logbuffer used by weblog, syslog and mqttlog
#if defined(ARDUINO_ESP8266_RELEASE_2_3_0) || defined(ARDUINO_ESP8266_RELEASE_2_4_0) || defined(ARDUINO_ESP8266_RELEASE_2_4_1) || defined(ARDUINO_ESP8266_RELEASE_2_4_2) || defined(ARDUINO_ESP8266_RELEASE_2_5_0) || defined(ARDUINO_ESP8266_RELEASE_2_5_1) || defined(ARDUINO_ESP8266_RELEASE_2_5_2)
#error "Arduino ESP8266 Core versions before 2.7.1 are not supported"

View File

@ -3017,11 +3017,11 @@ void HandleHttpCommand(void)
}
WSContentBegin(200, CT_JSON);
uint32_t curridx = TasmotaGlobal.web_log_index;
uint32_t curridx = TasmotaGlobal.log_buffer_pointer;
String svalue = Webserver->arg("cmnd");
if (svalue.length() && (svalue.length() < MQTT_MAX_PACKET_SIZE)) {
ExecuteWebCommand((char*)svalue.c_str(), SRC_WEBCOMMAND);
if (TasmotaGlobal.web_log_index != curridx) {
if (TasmotaGlobal.log_buffer_pointer != curridx) {
uint32_t counter = curridx;
WSContentSend_P(PSTR("{"));
bool cflg = false;
@ -3046,7 +3046,7 @@ void HandleHttpCommand(void)
counter++;
counter &= 0xFF;
if (!counter) counter++; // Skip 0 as it is not allowed
} while (counter != TasmotaGlobal.web_log_index);
} while (counter != TasmotaGlobal.log_buffer_pointer);
WSContentSend_P(PSTR("}"));
} else {
WSContentSend_P(PSTR("{\"" D_RSLT_WARNING "\":\"" D_ENABLE_WEBLOG_FOR_RESPONSE "\"}"));
@ -3094,14 +3094,14 @@ void HandleConsoleRefresh(void)
if (strlen(stmp)) { counter = atoi(stmp); }
WSContentBegin(200, CT_PLAIN);
WSContentSend_P(PSTR("%d}1%d}1"), TasmotaGlobal.web_log_index, Web.reset_web_log_flag);
WSContentSend_P(PSTR("%d}1%d}1"), TasmotaGlobal.log_buffer_pointer, Web.reset_web_log_flag);
if (!Web.reset_web_log_flag) {
counter = 0;
Web.reset_web_log_flag = true;
}
if (counter != TasmotaGlobal.web_log_index) {
if (counter != TasmotaGlobal.log_buffer_pointer) {
if (!counter) {
counter = TasmotaGlobal.web_log_index;
counter = TasmotaGlobal.log_buffer_pointer;
cflg = false;
}
do {
@ -3120,7 +3120,7 @@ void HandleConsoleRefresh(void)
counter++;
counter &= 0xFF;
if (!counter) { counter++; } // Skip log index 0 as it is not allowed
} while (counter != TasmotaGlobal.web_log_index);
} while (counter != TasmotaGlobal.log_buffer_pointer);
}
WSContentSend_P(PSTR("}1"));
WSContentEnd();

View File

@ -296,7 +296,7 @@ void MqttPublishLoggingAsync(void) {
if (!Settings.flag.mqtt_enabled || // SetOption3 - Enable MQTT
!Settings.mqttlog_level ||
(counter == TasmotaGlobal.web_log_index) ||
(counter == TasmotaGlobal.log_buffer_pointer) ||
TasmotaGlobal.global_state.mqtt_down) { return; }
do {
@ -314,7 +314,7 @@ void MqttPublishLoggingAsync(void) {
counter++;
counter &= 0xFF;
if (!counter) { counter++; } // Skip 0 as it is not allowed
} while (counter != TasmotaGlobal.web_log_index);
} while (counter != TasmotaGlobal.log_buffer_pointer);
}
void MqttPublish(const char* topic, bool retained)

View File

@ -289,9 +289,9 @@ void TelegramSendGetMe(void) {
String TelegramExecuteCommand(const char *svalue) {
String response = "";
uint32_t curridx = TasmotaGlobal.web_log_index;
uint32_t curridx = TasmotaGlobal.log_buffer_pointer;
ExecuteCommand(svalue, SRC_CHAT);
if (TasmotaGlobal.web_log_index != curridx) {
if (TasmotaGlobal.log_buffer_pointer != curridx) {
uint32_t counter = curridx;
response = F("{");
bool cflg = false;
@ -317,7 +317,7 @@ String TelegramExecuteCommand(const char *svalue) {
counter++;
counter &= 0xFF;
if (!counter) counter++; // Skip 0 as it is not allowed
} while (counter != TasmotaGlobal.web_log_index);
} while (counter != TasmotaGlobal.log_buffer_pointer);
response += F("}");
} else {
response = F("{\"" D_RSLT_WARNING "\":\"" D_ENABLE_WEBLOG_FOR_RESPONSE "\"}");