LOGln now logs to a central syslog server, if available.

This commit is contained in:
Fabian Schlenz 2021-01-16 13:41:46 +01:00
parent 47cd48d572
commit 11dbea0302
6 changed files with 44 additions and 5 deletions

View File

@ -39,4 +39,7 @@
#define MQTT_TOPIC_STATE_LONG "espleaf/state_long"
#define MQTT_TOPIC_COMMANDS "esplead/cmnd"
#define SYSLOG_HOST "..."
#define SYSLOG_PORT 514
//#define TEST_MODE

8
include/syslog.h Normal file
View File

@ -0,0 +1,8 @@
#pragma once
#include <Arduino.h>
#include <WiFiUdp.h>
#ifdef SYSLOG_HOST
void syslog(String msg, uint8_t severity=7);
#endif

View File

@ -1,8 +1,15 @@
#pragma once
#include "my_fastled.h"
#include "syslog.h"
#define LOG(...) Serial.printf(__VA_ARGS__)
#define LOGln(...) Serial.printf(__VA_ARGS__); Serial.println()
//#define LOG(...) Serial.printf(__VA_ARGS__)
//#define LOGln(...) Serial.printf(__VA_ARGS__); Serial.println()
#ifdef SYSLOG_HOST
#define LOGln(...) { char buffer[512]; snprintf(buffer, 512, __VA_ARGS__); syslog(buffer); Serial.println(buffer);}
#else
#define LOGln(...) Serial.printf(__VA_ARGS__); Serial.println()
#endif
void clear_leds();

View File

@ -10,6 +10,7 @@
#include "prototypes.h"
#include "mqtt.h"
#include "state.h"
#include "syslog.h"
std::vector<Node*> nodes;
std::list<Edge*> edges;
@ -173,6 +174,8 @@ void setup() {
delay(250);
show_status(0);
#endif
syslog("Setup done.");
}
void loop() {

17
src/syslog.cpp Normal file
View File

@ -0,0 +1,17 @@
#include "syslog.h"
#include "config.h"
#ifdef SYSLOG_HOST
void syslog(String msg, uint8_t severity) {
uint8_t facility = 16; // local0
if (severity > 7) severity = 7;
WiFiUDP udp;
udp.beginPacket(SYSLOG_HOST, SYSLOG_PORT);
udp.write("<");
udp.write(String(facility * 8 + severity).c_str());
udp.write(">1 - " OTA_HOSTNAME " espleaf 1 1 - ");
udp.write(msg.c_str());
udp.endPacket();
}
#endif

View File

@ -2,13 +2,14 @@
#include "tools.h"
void wifi_setup() {
LOG("Connecting to WiFi %s...", WIFI_SSID);
Serial.printf("Connecting to WiFi %s...", WIFI_SSID);
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) {
LOG(".");
Serial.print(".");
delay(300);
}
LOGln(" Connected as %s", WiFi.localIP().toString().c_str());
Serial.println();
LOGln("Connected as %s", WiFi.localIP().toString().c_str());
random16_add_entropy(micros());
}