I wrote a simple syslog client for a Photon project I was working on. Short and sweet.
#define FACILITY 1 // User-level message
#define SEVERITY 6 // Informational
#define PRIORITY (FACILITY * 8 + SEVERITY) // User.Info
#define SYSLOGPORT 514 // Default syslog port
#define HOSTNAME "HOST" // Change to hostname, not FQDN
UDP Udp;
String buffer = "";
IPAddress remoteIP(10, 0, 0, 202); // IP address of syslog server
char months[12][4] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
void setup()
{
int bytes;
String logEntry = "Motion Detected!!";
Serial.begin(115200);
setupTime();
createMsg(&logEntry);
delay(3000);
Serial.println(buffer);
Serial.println("Length = " + String(buffer.length()));
Udp.begin(SYSLOGPORT);
bytes = Udp.sendPacket(buffer, buffer.length(), remoteIP, SYSLOGPORT);
Serial.println("Number of bytes written = " + String(bytes));
}
void loop()
{
}
void createMsg(String * logMsg)
{
buffer = "<" + String(PRIORITY) + ">" + months[Time.month() - 1] + " ";
buffer += String(Time.day()) + " " + Time.format(Time.now(), "%H:%M:%S");
buffer += " " + String(HOSTNAME) + " log: " + *logMsg;
}
void setupTime(void)
{
Time.zone(-5); // EST/EDT
Time.setDSTOffset(1.0);
if (Time.isDST())
Time.beginDST();
else
Time.endDST();
}