@ -0,0 +1,106 @@ | |||
#pragma once | |||
#include <stdarg.h> | |||
#include <HardwareSerial.h> | |||
#include <WString.h> | |||
#include <Udp.h> | |||
#define SYSLOG_BUF_LEN 512 | |||
typedef enum { | |||
PANIC = 0, | |||
ERROR, | |||
WARN, | |||
INFO, | |||
DEBUG, | |||
TRACE | |||
} Priority; | |||
#define LOG_EMERG 0 /* system is unusable */ | |||
#define LOG_ALERT 1 /* action must be taken immediately */ | |||
#define LOG_CRIT 2 /* critical conditions */ | |||
#define LOG_ERR 3 /* error conditions */ | |||
#define LOG_WARNING 4 /* warning conditions */ | |||
#define LOG_NOTICE 5 /* normal but significant condition */ | |||
#define LOG_INFO 6 /* informational */ | |||
#define LOG_DEBUG 7 /* debug-level messages */ | |||
#define LOG_PRIMASK 0x07 /* mask to extract priority part (internal) */ | |||
/* extract priority */ | |||
#define LOG_PRI(p) ((p) & LOG_PRIMASK) | |||
#define LOG_MAKEPRI(fac, pri) (((fac) << 3) | (pri)) | |||
/* facility codes */ | |||
#define LOG_KERN (0 << 3) /* kernel messages */ | |||
#define LOG_USER (1 << 3) /* random user-level messages */ | |||
#define LOG_MAIL (2 << 3) /* mail system */ | |||
#define LOG_DAEMON (3 << 3) /* system daemons */ | |||
#define LOG_AUTH (4 << 3) /* security/authorization messages */ | |||
#define LOG_SYSLOG (5 << 3) /* messages generated internally by syslogd */ | |||
#define LOG_LPR (6 << 3) /* line printer subsystem */ | |||
#define LOG_NEWS (7 << 3) /* network news subsystem */ | |||
#define LOG_UUCP (8 << 3) /* UUCP subsystem */ | |||
#define LOG_CRON (9 << 3) /* clock daemon */ | |||
#define LOG_AUTHPRIV (10 << 3) /* security/authorization messages (private) */ | |||
#define LOG_FTP (11 << 3) /* ftp daemon */ | |||
/* other codes through 15 reserved for system use */ | |||
#define LOG_LOCAL0 (16 << 3) /* reserved for local use */ | |||
#define LOG_LOCAL1 (17 << 3) /* reserved for local use */ | |||
#define LOG_LOCAL2 (18 << 3) /* reserved for local use */ | |||
#define LOG_LOCAL3 (19 << 3) /* reserved for local use */ | |||
#define LOG_LOCAL4 (20 << 3) /* reserved for local use */ | |||
#define LOG_LOCAL5 (21 << 3) /* reserved for local use */ | |||
#define LOG_LOCAL6 (22 << 3) /* reserved for local use */ | |||
#define LOG_LOCAL7 (23 << 3) /* reserved for local use */ | |||
#define LOG_NFACILITIES 24 /* current number of facilities */ | |||
#define LOG_FACMASK 0x03f8 /* mask to extract facility part */ | |||
/* facility of pri */ | |||
#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3) | |||
#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */ | |||
#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */ | |||
class Syslog { | |||
public: | |||
Syslog(); | |||
~Syslog(); | |||
void operator() (Priority, const char *, ...); | |||
void operator() (Priority, const __FlashStringHelper *, ...); | |||
void operator() (Priority, String); | |||
void log(Priority, const char *); | |||
void log(Priority, const __FlashStringHelper *); | |||
void log(Priority, String); | |||
void logf(Priority, const char *, ...); | |||
void logf(Priority, const __FlashStringHelper *, ...); | |||
Syslog& setLevel(Priority); | |||
Syslog& setFacility(uint16_t); | |||
Syslog& setHostname(const char *); | |||
Syslog& setHostname(String &); | |||
Syslog& setApp(const char *); | |||
Syslog& setApp(String &); | |||
Syslog& setRemote(UDP &, const char *, int = 514); | |||
public: | |||
const char *server = nullptr; | |||
int port = 514; | |||
const char *hostname = nullptr; | |||
const char *app = nullptr; | |||
uint16_t mask = LOG_INFO; | |||
uint16_t facility = LOG_KERN; | |||
private: | |||
char buf[SYSLOG_BUF_LEN]; | |||
UDP *client = nullptr; | |||
void prio(Priority prio); | |||
void send(uint16_t prio, const char *); | |||
void send(uint16_t prio, const __FlashStringHelper *); | |||
}; | |||
#if !defined(NO_GLOBAL_SYSLOG) | |||
extern Syslog syslog; | |||
#endif |
@ -1,106 +1 @@ | |||
#pragma once | |||
#include <stdarg.h> | |||
#include <HardwareSerial.h> | |||
#include <WString.h> | |||
#include <Udp.h> | |||
#define SYSLOG_BUF_LEN 512 | |||
typedef enum { | |||
PANIC = 0, | |||
ERROR, | |||
WARN, | |||
INFO, | |||
DEBUG, | |||
TRACE | |||
} Priority; | |||
#define LOG_EMERG 0 /* system is unusable */ | |||
#define LOG_ALERT 1 /* action must be taken immediately */ | |||
#define LOG_CRIT 2 /* critical conditions */ | |||
#define LOG_ERR 3 /* error conditions */ | |||
#define LOG_WARNING 4 /* warning conditions */ | |||
#define LOG_NOTICE 5 /* normal but significant condition */ | |||
#define LOG_INFO 6 /* informational */ | |||
#define LOG_DEBUG 7 /* debug-level messages */ | |||
#define LOG_PRIMASK 0x07 /* mask to extract priority part (internal) */ | |||
/* extract priority */ | |||
#define LOG_PRI(p) ((p) & LOG_PRIMASK) | |||
#define LOG_MAKEPRI(fac, pri) (((fac) << 3) | (pri)) | |||
/* facility codes */ | |||
#define LOG_KERN (0 << 3) /* kernel messages */ | |||
#define LOG_USER (1 << 3) /* random user-level messages */ | |||
#define LOG_MAIL (2 << 3) /* mail system */ | |||
#define LOG_DAEMON (3 << 3) /* system daemons */ | |||
#define LOG_AUTH (4 << 3) /* security/authorization messages */ | |||
#define LOG_SYSLOG (5 << 3) /* messages generated internally by syslogd */ | |||
#define LOG_LPR (6 << 3) /* line printer subsystem */ | |||
#define LOG_NEWS (7 << 3) /* network news subsystem */ | |||
#define LOG_UUCP (8 << 3) /* UUCP subsystem */ | |||
#define LOG_CRON (9 << 3) /* clock daemon */ | |||
#define LOG_AUTHPRIV (10 << 3) /* security/authorization messages (private) */ | |||
#define LOG_FTP (11 << 3) /* ftp daemon */ | |||
/* other codes through 15 reserved for system use */ | |||
#define LOG_LOCAL0 (16 << 3) /* reserved for local use */ | |||
#define LOG_LOCAL1 (17 << 3) /* reserved for local use */ | |||
#define LOG_LOCAL2 (18 << 3) /* reserved for local use */ | |||
#define LOG_LOCAL3 (19 << 3) /* reserved for local use */ | |||
#define LOG_LOCAL4 (20 << 3) /* reserved for local use */ | |||
#define LOG_LOCAL5 (21 << 3) /* reserved for local use */ | |||
#define LOG_LOCAL6 (22 << 3) /* reserved for local use */ | |||
#define LOG_LOCAL7 (23 << 3) /* reserved for local use */ | |||
#define LOG_NFACILITIES 24 /* current number of facilities */ | |||
#define LOG_FACMASK 0x03f8 /* mask to extract facility part */ | |||
/* facility of pri */ | |||
#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3) | |||
#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */ | |||
#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */ | |||
class Syslog { | |||
public: | |||
Syslog(); | |||
~Syslog(); | |||
void operator() (Priority, const char *, ...); | |||
void operator() (Priority, const __FlashStringHelper *, ...); | |||
void operator() (Priority, String); | |||
void log(Priority, const char *); | |||
void log(Priority, const __FlashStringHelper *); | |||
void log(Priority, String); | |||
void logf(Priority, const char *, ...); | |||
void logf(Priority, const __FlashStringHelper *, ...); | |||
Syslog& setLevel(Priority); | |||
Syslog& setFacility(uint16_t); | |||
Syslog& setHostname(const char *); | |||
Syslog& setHostname(String &); | |||
Syslog& setApp(const char *); | |||
Syslog& setApp(String &); | |||
Syslog& setRemote(UDP &, const char *, int = 514); | |||
public: | |||
const char *server = nullptr; | |||
int port = 514; | |||
const char *hostname = nullptr; | |||
const char *app = nullptr; | |||
uint16_t mask = LOG_INFO; | |||
uint16_t facility = LOG_KERN; | |||
private: | |||
char buf[SYSLOG_BUF_LEN]; | |||
UDP *client = nullptr; | |||
void prio(Priority prio); | |||
void send(uint16_t prio, const char *); | |||
void send(uint16_t prio, const __FlashStringHelper *); | |||
}; | |||
#if !defined(NO_GLOBAL_SYSLOG) | |||
extern Syslog syslog; | |||
#endif | |||
#include "Syslog.h" |