This implements RFC5424 version of the protocol. Don't use https://github.com/arcao/Syslog since the protocol itself is trivial and most of the libraries functionality is not needed here. The library also doesn't support setting the PROCID field, which is set to a random id to indicate a reboot here. Add UI for syslog configuration to network admin view.
35 lines
721 B
C++
35 lines
721 B
C++
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
#pragma once
|
|
#include <WiFiUdp.h>
|
|
#include <TaskSchedulerDeclarations.h>
|
|
#include <mutex>
|
|
|
|
class SyslogLogger {
|
|
public:
|
|
SyslogLogger();
|
|
void init(Scheduler& scheduler);
|
|
void updateSettings(const String&& hostname);
|
|
void write(const uint8_t *buffer, size_t size);
|
|
|
|
private:
|
|
void loop();
|
|
void disable();
|
|
void enable();
|
|
bool resolveAndStart();
|
|
bool isResolved() const {
|
|
return _address != INADDR_NONE;
|
|
}
|
|
|
|
Task _loopTask;
|
|
std::mutex _mutex;
|
|
WiFiUDP _udp;
|
|
IPAddress _address;
|
|
String _syslog_hostname;
|
|
String _proc_id;
|
|
String _header;
|
|
uint16_t _port;
|
|
bool _enabled;
|
|
};
|
|
|
|
extern SyslogLogger Syslog;
|