mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-20 01:36:34 +00:00
Update logging with separate log levels
This commit is contained in:
parent
f8c43888a5
commit
1204bdc655
@ -34,16 +34,18 @@ SOFTWARE.
|
|||||||
void Logging::begin(int level, bool showLevel)
|
void Logging::begin(int level, bool showLevel)
|
||||||
{
|
{
|
||||||
#ifndef DISABLE_LOGGING
|
#ifndef DISABLE_LOGGING
|
||||||
setLevel(level);
|
setLevel(0, level);
|
||||||
setShowLevel(showLevel);
|
setLevel(1, level);
|
||||||
|
setLevel(2, level);
|
||||||
|
setShowLevel(0, showLevel);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Logging::registerOutput(uint8_t slot, Print * logOutput, int level, bool showLevel)
|
void Logging::registerOutput(uint8_t slot, Print * logOutput, int level, bool showLevel)
|
||||||
{
|
{
|
||||||
#ifndef DISABLE_LOGGING
|
#ifndef DISABLE_LOGGING
|
||||||
setLevel(level);
|
setLevel(0, level);
|
||||||
setShowLevel(showLevel);
|
setShowLevel(0, showLevel);
|
||||||
if(slot >= 3) return;
|
if(slot >= 3) return;
|
||||||
_logOutput[slot] = logOutput;
|
_logOutput[slot] = logOutput;
|
||||||
#endif
|
#endif
|
||||||
@ -57,33 +59,33 @@ void Logging::unregisterOutput(uint8_t slot)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Logging::setLevel(int level)
|
void Logging::setLevel(uint8_t slot, int level)
|
||||||
{
|
{
|
||||||
#ifndef DISABLE_LOGGING
|
#ifndef DISABLE_LOGGING
|
||||||
_level = constrain(level, LOG_LEVEL_SILENT, LOG_LEVEL_VERBOSE);
|
_level[slot] = constrain(level, LOG_LEVEL_SILENT, LOG_LEVEL_VERBOSE);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int Logging::getLevel() const
|
int Logging::getLevel(uint8_t slot) const
|
||||||
{
|
{
|
||||||
#ifndef DISABLE_LOGGING
|
#ifndef DISABLE_LOGGING
|
||||||
return _level;
|
return _level[slot];
|
||||||
#else
|
#else
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Logging::setShowLevel(bool showLevel)
|
void Logging::setShowLevel(uint8_t slot, bool showLevel)
|
||||||
{
|
{
|
||||||
#ifndef DISABLE_LOGGING
|
#ifndef DISABLE_LOGGING
|
||||||
_showLevel = showLevel;
|
_showLevel[slot] = showLevel;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Logging::getShowLevel() const
|
bool Logging::getShowLevel(uint8_t slot) const
|
||||||
{
|
{
|
||||||
#ifndef DISABLE_LOGGING
|
#ifndef DISABLE_LOGGING
|
||||||
return _showLevel;
|
return _showLevel[slot];
|
||||||
#else
|
#else
|
||||||
return false;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
|
@ -85,7 +85,7 @@ class Logging {
|
|||||||
*/
|
*/
|
||||||
Logging()
|
Logging()
|
||||||
#ifndef DISABLE_LOGGING
|
#ifndef DISABLE_LOGGING
|
||||||
: _level(LOG_LEVEL_SILENT), _showLevel(true)
|
// : _level(LOG_LEVEL_SILENT), _showLevel(true)
|
||||||
#endif
|
#endif
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@ -126,14 +126,14 @@ class Logging {
|
|||||||
* \param level - The new log level.
|
* \param level - The new log level.
|
||||||
* \return void
|
* \return void
|
||||||
*/
|
*/
|
||||||
void setLevel(int level);
|
void setLevel(uint8_t slot,int level);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the log level.
|
* Get the log level.
|
||||||
*
|
*
|
||||||
* \return The current log level.
|
* \return The current log level.
|
||||||
*/
|
*/
|
||||||
int getLevel() const;
|
int getLevel(uint8_t slot) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set whether to show the log level.
|
* Set whether to show the log level.
|
||||||
@ -142,7 +142,7 @@ class Logging {
|
|||||||
* false otherwise.
|
* false otherwise.
|
||||||
* \return void
|
* \return void
|
||||||
*/
|
*/
|
||||||
void setShowLevel(bool showLevel);
|
void setShowLevel(uint8_t slot,bool showLevel);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get whether the log level is shown during logging
|
* Get whether the log level is shown during logging
|
||||||
@ -150,7 +150,7 @@ class Logging {
|
|||||||
* \return true if the log level is be shown for each log
|
* \return true if the log level is be shown for each log
|
||||||
* false otherwise.
|
* false otherwise.
|
||||||
*/
|
*/
|
||||||
bool getShowLevel() const;
|
bool getShowLevel(uint8_t slot) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets a function to be called before each log command.
|
* Sets a function to be called before each log command.
|
||||||
@ -280,12 +280,9 @@ class Logging {
|
|||||||
template <class T> void printLevel(int level, T msg, ...)
|
template <class T> void printLevel(int level, T msg, ...)
|
||||||
{
|
{
|
||||||
#ifndef DISABLE_LOGGING
|
#ifndef DISABLE_LOGGING
|
||||||
if(level > _level) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(uint8_t i = 0; i < 3; i++) {
|
for(uint8_t i = 0; i < 3; i++) {
|
||||||
if(_logOutput[i] == NULL) continue;
|
if(_logOutput[i] == NULL || level>_level[i]) continue;
|
||||||
|
|
||||||
if(_prefix != NULL) {
|
if(_prefix != NULL) {
|
||||||
_prefix(level, _logOutput[i]);
|
_prefix(level, _logOutput[i]);
|
||||||
@ -304,8 +301,8 @@ class Logging {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef DISABLE_LOGGING
|
#ifndef DISABLE_LOGGING
|
||||||
int _level;
|
int _level[3];
|
||||||
bool _showLevel;
|
bool _showLevel[3];
|
||||||
Print * _logOutput[3];
|
Print * _logOutput[3];
|
||||||
|
|
||||||
printfunction _prefix = NULL;
|
printfunction _prefix = NULL;
|
||||||
|
@ -113,74 +113,6 @@ void debugStart()
|
|||||||
// log/logf method)
|
// log/logf method)
|
||||||
}
|
}
|
||||||
|
|
||||||
// void serialPrintln(const char * debugText, uint8_t level)
|
|
||||||
//{
|
|
||||||
/*
|
|
||||||
String debugTimeText((char *)0);
|
|
||||||
debugTimeText.reserve(128);
|
|
||||||
|
|
||||||
uint8_t heapfrag = halGetHeapFragmentation();
|
|
||||||
debugTimeText = F("[");
|
|
||||||
debugTimeText += String(float(millis()) / 1000, 3);
|
|
||||||
debugTimeText += F("s] ");
|
|
||||||
debugTimeText += halGetMaxFreeBlock();
|
|
||||||
debugTimeText += F("/");
|
|
||||||
debugTimeText += ESP.getFreeHeap();
|
|
||||||
debugTimeText += F(" ");
|
|
||||||
if(heapfrag < 10) debugTimeText += F(" ");
|
|
||||||
debugTimeText += heapfrag;
|
|
||||||
debugTimeText += F(" ");
|
|
||||||
|
|
||||||
#if LV_MEM_CUSTOM == 0
|
|
||||||
lv_mem_monitor_t mem_mon;
|
|
||||||
lv_mem_monitor(&mem_mon);
|
|
||||||
debugTimeText += F("| ");
|
|
||||||
debugTimeText += mem_mon.used_pct;
|
|
||||||
debugTimeText += F("% ");
|
|
||||||
debugTimeText += mem_mon.free_biggest_size;
|
|
||||||
debugTimeText += F("b/");
|
|
||||||
debugTimeText += mem_mon.free_size;
|
|
||||||
debugTimeText += F("b ");
|
|
||||||
debugTimeText += (mem_mon.total_size - mem_mon.free_size);
|
|
||||||
debugTimeText += F("b | ");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if(debugSerialStarted) {
|
|
||||||
// Serial.print(debugTimeText);
|
|
||||||
// Serial.println(debugText);
|
|
||||||
}/
|
|
||||||
|
|
||||||
switch(level) {
|
|
||||||
case LOG_LEVEL_FATAL:
|
|
||||||
Log.fatal(debugText);
|
|
||||||
break;
|
|
||||||
case LOG_LEVEL_ERROR:
|
|
||||||
Log.error(debugText);
|
|
||||||
break;
|
|
||||||
case LOG_LEVEL_WARNING:
|
|
||||||
Log.warning(debugText);
|
|
||||||
break;
|
|
||||||
case LOG_LEVEL_VERBOSE:
|
|
||||||
Log.verbose(debugText);
|
|
||||||
break;
|
|
||||||
case LOG_LEVEL_TRACE:
|
|
||||||
Log.trace(debugText);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Log.notice(debugText);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if HASP_USE_TELNET != 0
|
|
||||||
// telnetPrint(debugTimeText.c_str());
|
|
||||||
telnetPrintln(debugText);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void serialPrintln(String & debugText, uint8_t level)
|
|
||||||
{
|
|
||||||
serialPrintln(debugText.c_str(), level);
|
|
||||||
} */
|
|
||||||
|
|
||||||
#if HASP_USE_SYSLOG != 0
|
#if HASP_USE_SYSLOG != 0
|
||||||
void syslogSend(uint8_t priority, const char * debugText)
|
void syslogSend(uint8_t priority, const char * debugText)
|
||||||
{
|
{
|
||||||
@ -256,20 +188,6 @@ bool debugSetConfig(const JsonObject & settings)
|
|||||||
return changed;
|
return changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
void debugSendOuput(const char * buffer)
|
|
||||||
{
|
|
||||||
if(debugSerialStarted) Serial.print(buffer);
|
|
||||||
telnetPrint(buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
void debugSendOuput(const __FlashStringHelper * txt)
|
|
||||||
{
|
|
||||||
if(debugSerialStarted) Serial.print(txt);
|
|
||||||
telnetPrint(txt);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
inline void debugSendAnsiCode(const __FlashStringHelper * code, Print * _logOutput)
|
inline void debugSendAnsiCode(const __FlashStringHelper * code, Print * _logOutput)
|
||||||
{
|
{
|
||||||
if(debugAnsiCodes) _logOutput->print(code);
|
if(debugAnsiCodes) _logOutput->print(code);
|
||||||
@ -283,12 +201,14 @@ static void debugPrintTimestamp(int level, Print * _logOutput)
|
|||||||
time(&rawtime);
|
time(&rawtime);
|
||||||
timeinfo = localtime(&rawtime);
|
timeinfo = localtime(&rawtime);
|
||||||
|
|
||||||
|
// strftime(buffer, sizeof(buffer), "%b %d %H:%M:%S.", timeinfo);
|
||||||
|
// Serial.println(buffer);
|
||||||
|
|
||||||
debugSendAnsiCode(F(TERM_COLOR_CYAN), _logOutput);
|
debugSendAnsiCode(F(TERM_COLOR_CYAN), _logOutput);
|
||||||
// strftime(buffer, sizeof(buffer), ("[%b %d %H:%M:%S."), timeinfo);
|
|
||||||
// strftime(buffer, sizeof(buffer), ("[%H:%M:%S."), timeinfo);
|
if(timeinfo->tm_year >= 120) {
|
||||||
if(timeinfo->tm_year >= 2020) {
|
|
||||||
char buffer[64];
|
char buffer[64];
|
||||||
strftime(buffer, sizeof(buffer), PSTR("[%b %d %H:%M:%S."), timeinfo); // Literal String
|
strftime(buffer, sizeof(buffer), "[%b %d %H:%M:%S.", timeinfo); // Literal String
|
||||||
_logOutput->print(buffer);
|
_logOutput->print(buffer);
|
||||||
_logOutput->printf(PSTR("%03u]"), millis() % 1000);
|
_logOutput->printf(PSTR("%03u]"), millis() % 1000);
|
||||||
} else {
|
} else {
|
||||||
@ -311,7 +231,7 @@ static void debugPrintHaspMemory(int level, Print * _logOutput)
|
|||||||
else
|
else
|
||||||
debugSendAnsiCode(F(TERM_COLOR_RED), _logOutput);
|
debugSendAnsiCode(F(TERM_COLOR_RED), _logOutput);
|
||||||
}
|
}
|
||||||
_logOutput->printf(PSTR("[%5u/%5u %2u] "), maxfree, totalfree, frag);
|
_logOutput->printf(PSTR("[%5u/%5u%3u]"), maxfree, totalfree, frag);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LV_MEM_CUSTOM == 0
|
#if LV_MEM_CUSTOM == 0
|
||||||
@ -330,7 +250,7 @@ static void debugPrintLvglMemory(int level, Print * _logOutput)
|
|||||||
else
|
else
|
||||||
debugSendAnsiCode(F(TERM_COLOR_RED), _logOutput);
|
debugSendAnsiCode(F(TERM_COLOR_RED), _logOutput);
|
||||||
}
|
}
|
||||||
_logOutput->printf(PSTR("[%5u/%5u %2u] "), mem_mon.free_biggest_size, mem_mon.free_size, mem_mon.frag_pct);
|
_logOutput->printf(PSTR("[%5u/%5u%3u]"), mem_mon.free_biggest_size, mem_mon.free_size, mem_mon.frag_pct);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -383,7 +303,8 @@ void debugPreSetup(JsonObject settings)
|
|||||||
{
|
{
|
||||||
// Link stream to debugOutput
|
// Link stream to debugOutput
|
||||||
// debugOutput.reserve(512);
|
// debugOutput.reserve(512);
|
||||||
Log.begin(LOG_LEVEL_VERBOSE, true);
|
|
||||||
|
Log.begin(LOG_LEVEL_WARNING, true);
|
||||||
Log.setPrefix(debugPrintPrefix); // Uncomment to get timestamps as prefix
|
Log.setPrefix(debugPrintPrefix); // Uncomment to get timestamps as prefix
|
||||||
Log.setSuffix(debugPrintSuffix); // Uncomment to get newline as suffix
|
Log.setSuffix(debugPrintSuffix); // Uncomment to get newline as suffix
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user