Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 67 additions & 6 deletions src/Syslog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ Syslog::Syslog(UDP &client, uint8_t protocol) {
this->_deviceHostname = SYSLOG_NILVALUE;
this->_appName = SYSLOG_NILVALUE;
this->_priDefault = LOG_KERN;
this->_serialPrint = false;
}

Syslog::Syslog(UDP &client, const char* server, uint16_t port, const char* deviceHostname, const char* appName, uint16_t priDefault, uint8_t protocol) {
Expand All @@ -24,6 +25,7 @@ Syslog::Syslog(UDP &client, const char* server, uint16_t port, const char* devic
this->_deviceHostname = (deviceHostname == NULL) ? SYSLOG_NILVALUE : deviceHostname;
this->_appName = (appName == NULL) ? SYSLOG_NILVALUE : appName;
this->_priDefault = priDefault;
this->_serialPrint = false;
}

Syslog::Syslog(UDP &client, IPAddress ip, uint16_t port, const char* deviceHostname, const char* appName, uint16_t priDefault, uint8_t protocol) {
Expand All @@ -34,6 +36,7 @@ Syslog::Syslog(UDP &client, IPAddress ip, uint16_t port, const char* deviceHostn
this->_deviceHostname = (deviceHostname == NULL) ? SYSLOG_NILVALUE : deviceHostname;
this->_appName = (appName == NULL) ? SYSLOG_NILVALUE : appName;
this->_priDefault = priDefault;
this->_serialPrint = false;
}

Syslog &Syslog::server(const char* server, uint16_t port) {
Expand Down Expand Up @@ -183,28 +186,36 @@ bool Syslog::log(const char *message) {
return this->_sendLog(this->_priDefault, message);
}

void Syslog::setSerialPrint(bool serialPrint) {
this->_serialPrint = serialPrint;
}

// Private Methods /////////////////////////////////////////////////////////////

inline bool Syslog::_sendLog(uint16_t pri, const char *message) {
int result;

int result;

if (this->_serialPrint)
{
Serial.printf("%s: %s\r\n", this->_getPriorityString(pri).c_str(), message);
}

if ((this->_server == NULL && this->_ip == INADDR_NONE) || this->_port == 0)
return false;

{
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;

Expand Down Expand Up @@ -234,6 +245,11 @@ inline bool Syslog::_sendLog(uint16_t pri, const char *message) {
inline bool Syslog::_sendLog(uint16_t pri, const __FlashStringHelper *message) {
int result;

if (this->_serialPrint)
{
Serial.printf("%s: %s\r\n", this->_getPriorityString(pri).c_str(), message);
}

if ((this->_server == NULL && this->_ip == INADDR_NONE) || this->_port == 0)
return false;

Expand Down Expand Up @@ -277,3 +293,48 @@ inline bool Syslog::_sendLog(uint16_t pri, const __FlashStringHelper *message) {

return true;
}

String Syslog::_getPriorityString(uint16_t pri) {
String priorityName;

switch (pri)
{
case LOG_EMERG:
priorityName = "EMERGENCY";
break;

case LOG_ALERT:
priorityName = "ALERT";
break;

case LOG_CRIT:
priorityName = "CRITICAL";
break;

case LOG_ERR:
priorityName = "ERROR";
break;

case LOG_WARNING:
priorityName = "WARNING";
break;

case LOG_NOTICE:
priorityName = "NOTICE";
break;

case LOG_INFO:
priorityName = "INFO";
break;

case LOG_DEBUG:
priorityName = "DEBUG";
break;

default:
priorityName = "UNKNOWN";
break;
}

return priorityName;
}
6 changes: 6 additions & 0 deletions src/Syslog.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,13 @@ class Syslog {
const char* _appName;
uint16_t _priDefault;
uint8_t _priMask = 0xff;
bool _serialPrint;

bool _sendLog(uint16_t pri, const char *message);
bool _sendLog(uint16_t pri, const __FlashStringHelper *message);

String _getPriorityString(uint16_t pri);

public:
Syslog(UDP &client, uint8_t protocol = SYSLOG_PROTO_IETF);
Syslog(UDP &client, const char* server, uint16_t port, const char* deviceHostname = SYSLOG_NILVALUE, const char* appName = SYSLOG_NILVALUE, uint16_t priDefault = LOG_KERN, uint8_t protocol = SYSLOG_PROTO_IETF);
Expand All @@ -105,6 +108,7 @@ class Syslog {
Syslog &deviceHostname(const char* deviceHostname);
Syslog &appName(const char* appName);
Syslog &defaultPriority(uint16_t pri = LOG_KERN);


Syslog &logMask(uint8_t priMask);

Expand All @@ -124,6 +128,8 @@ class Syslog {
bool log(const __FlashStringHelper *message);
bool log(const String &message);
bool log(const char *message);

void setSerialPrint(bool serialPrint);
};

#endif