hook up additional rsyslog output if debug printing is active

wio-e5
Thomas Göttgens 2023-02-01 15:09:07 +01:00
rodzic d34f6d0f68
commit 090d399843
4 zmienionych plików z 33 dodań i 78 usunięć

Wyświetl plik

@ -92,21 +92,6 @@ bool Syslog::isEnabled()
return this->_enabled;
}
bool Syslog::log(uint16_t pri, const __FlashStringHelper *message)
{
return this->_sendLog(pri, message);
}
bool Syslog::log(uint16_t pri, const String &message)
{
return this->_sendLog(pri, message.c_str());
}
bool Syslog::log(uint16_t pri, const char *message)
{
return this->_sendLog(pri, message);
}
bool Syslog::vlogf(uint16_t pri, const char *fmt, va_list args)
{
char *message;
@ -132,17 +117,6 @@ bool Syslog::vlogf(uint16_t pri, const char *fmt, va_list args)
return result;
}
bool Syslog::logf(uint16_t pri, const char *fmt, ...)
{
va_list args;
bool result;
va_start(args, fmt);
result = this->vlogf(pri, fmt, args);
va_end(args);
return result;
}
inline bool Syslog::_sendLog(uint16_t pri, const char *message)
{
int result;
@ -184,44 +158,4 @@ inline bool Syslog::_sendLog(uint16_t pri, const char *message)
return true;
}
inline bool Syslog::_sendLog(uint16_t pri, const __FlashStringHelper *message)
{
int result;
if (!this->_enabled)
return false;
if ((this->_server == NULL && this->_ip == INADDR_NONE) || this->_port == 0)
return false;
// Check priority against priMask values.
if ((LOG_MASK(LOG_PRI(pri)) & this->_priMask) == 0)
return true;
// Set default facility if none specified.
if ((pri & LOG_FACMASK) == 0)
pri = LOG_MAKEPRI(LOG_FAC(this->_priDefault), pri);
if (this->_server != NULL) {
result = this->_client->beginPacket(this->_server, this->_port);
} else {
result = this->_client->beginPacket(this->_ip, this->_port);
}
if (result != 1)
return false;
this->_client->print('<');
this->_client->print(pri);
this->_client->print(F(">1 - "));
this->_client->print(this->_deviceHostname);
this->_client->print(' ');
this->_client->print(this->_appName);
this->_client->print(F(" - - - \xEF\xBB\xBF"));
this->_client->print(message);
this->_client->endPacket();
return true;
}
#endif

Wyświetl plik

@ -132,7 +132,6 @@ class Syslog
bool _enabled = false;
bool _sendLog(uint16_t pri, const char *message);
bool _sendLog(uint16_t pri, const __FlashStringHelper *message);
public:
explicit Syslog(UDP &client);
@ -148,13 +147,7 @@ class Syslog
void disable();
bool isEnabled();
bool log(uint16_t pri, const __FlashStringHelper *message);
bool log(uint16_t pri, const String &message);
bool log(uint16_t pri, const char *message);
bool vlogf(uint16_t pri, const char *fmt, va_list args) __attribute__((format(printf, 3, 0)));
bool logf(uint16_t pri, const char *fmt, ...) __attribute__((format(printf, 3, 4)));
};
#endif // HAS_ETHERNET || HAS_WIFI

Wyświetl plik

@ -13,6 +13,8 @@
*/
NoopPrint noopPrint;
extern Syslog syslog;
void RedirectablePrint::setDestination(Print *_dest)
{
assert(_dest);
@ -96,6 +98,32 @@ size_t RedirectablePrint::log(const char *logLevel, const char *format, ...)
}
}
r += vprintf(format, arg);
// if syslog is in use, collect the log messages and send them to syslog
if (syslog.isEnabled()) {
int ll = 0;
switch (logLevel[0]) {
case 'D':
ll = SYSLOG_DEBUG;
break;
case 'I':
ll = SYSLOG_INFO;
break;
case 'W':
ll = SYSLOG_WARN;
break;
case 'E':
ll = SYSLOG_ERR;
break;
case 'C':
ll = SYSLOG_CRIT;
break;
default:
ll = 0;
}
syslog.vlogf(ll, format, arg);
}
va_end(arg);
isContinuationMessage = !hasNewline;

Wyświetl plik

@ -15,6 +15,8 @@
#include "mqtt/JSON.h"
#include <assert.h>
const int reconnectMax = 5;
MQTT *mqtt;
String statusTopic = "msh/2/stat/";
@ -218,15 +220,13 @@ void MQTT::reconnect()
sendSubscriptions();
} else {
#if HAS_WIFI && !defined(ARCH_PORTDUINO)
LOG_ERROR("Failed to contact MQTT server (%d/5)...\n", reconnectCount + 1);
if (reconnectCount >= 4) {
reconnectCount++;
LOG_ERROR("Failed to contact MQTT server (%d/%d)...\n", reconnectCount, reconnectMax);
if (reconnectCount >= reconnectMax) {
needReconnect = true;
wifiReconnect->setIntervalFromNow(0);
reconnectCount = 0;
} else {
reconnectCount++;
}
#endif
}
}