zh_syslog/include/zh_syslog.h
2024-07-15 13:08:53 +03:00

114 lines
4.1 KiB
C

#pragma once
#include "stdbool.h"
#include "esp_err.h"
#include "esp_log.h"
#include "lwip/err.h"
#include "lwip/sockets.h"
#include "lwip/sys.h"
#include "lwip/netdb.h"
#define ZH_SYSLOG_INIT_CONFIG_DEFAULT() \
{ \
.syslog_ip = "192.168.0.1", \
.syslog_port = 514 \
}
#ifdef __cplusplus
extern "C"
{
#endif
typedef enum // Enumeration of possible syslog facility codes.
{
ZH_KERN, // Kernel messages.
ZH_USER, // User-level messages.
ZH_MAIL, // Mail system.
ZH_DAEMON, // System daemons.
ZH_AUTH, // Security/authorization messages.
ZH_SYSLOG, // Messages generated internally by syslogd.
ZH_LPR, // Line printer subsystem.
ZH_NEWS, // Network news subsystem.
ZH_UUCP, // UUCP subsystem.
ZH_CRON, // Cron subsystem.
ZH_AUTHPRIV, // Security/authorization messages.
ZH_FTP, // FTP daemon.
ZH_NTP, // NTP subsystem.
ZH_SECURITY, // Log audit.
ZH_CONSOLE, // Log alert.
ZH_SOLARIS_CRON, // Scheduling daemon.
ZH_LOCAL0, // Local use 0.
ZH_LOCAL1, // Local use 1.
ZH_LOCAL2, // Local use 2.
ZH_LOCAL3, // Local use 3.
ZH_LOCAL4, // Local use 4.
ZH_LOCAL5, // Local use 5.
ZH_LOCAL6, // Local use 6.
ZH_LOCAL7, // Local use 7.
} zh_syslog_facility_code_t;
typedef enum // Enumeration of possible syslog severity codes.
{
ZH_EMERG, // System is unusable.
ZH_ALERT, // Action must be taken immediately.
ZH_CRIT, // Critical conditions.
ZH_ERR, // Error conditions.
ZH_WARNING, // Warning conditions.
ZH_NOTICE, // Normal but significant condition.
ZH_INFO, // Informational messages.
ZH_DEBUG // Debug-level messages.
} zh_syslog_severity_code_t;
typedef struct // Structure for initial initialization of syslog client.
{
char syslog_ip[16]; // Syslog server IP address.
uint32_t syslog_port; // Syslog server port.
} zh_syslog_init_config_t;
/**
* @brief Initialize syslog client.
*
* @param[in] config Pointer to syslog client initialized configuration structure. Can point to a temporary variable.
*
* @attention Connection to the network must be established first.
*
* @note Before initialize the syslog client recommend initialize zh_syslog_init_config_t structure with default values.
*
* @code zh_syslog_init_config_t config = ZH_SYSLOG_INIT_CONFIG_DEFAULT() @endcode
*
* @return
* - ESP_OK if initialization was success
* - ESP_ERR_INVALID_ARG if parameter error
* - ESP_FAIL if socker error
*/
esp_err_t zh_syslog_init(const zh_syslog_init_config_t *config);
/**
* @brief Deinitialize syslog client.
*
* @return
* - ESP_OK if deinitialization was success
* - ESP_ERR_NOT_FOUND if syslog client is not initialized
*/
esp_err_t zh_syslog_deinit(void);
/**
* @brief Send message to syslog server.
*
* @param[in] facility Syslog facility code.
* @param[in] severity Syslog severity code.
* @param[in] hostname Pointer to device that generated the message. Only alphanumeric characters without spaces.
* @param[in] app_name Pointer to application that generated the message. Only alphanumeric characters without spaces.
* @param[in] message Pointer to message for send.
*
* @return
* - ESP_OK if send was success
* - ESP_ERR_INVALID_ARG if parameter error
* - ESP_ERR_NOT_FOUND if syslog client is not initialized
* - ESP_FAIL if socker error
*/
esp_err_t zh_syslog_send(const zh_syslog_facility_code_t facility, const zh_syslog_severity_code_t severity, const char *hostname, const char *app_name, const char *message);
#ifdef __cplusplus
}
#endif