MEDIUM: logs: add support for RFC5424 header format per logger
The function __send_log() iterates over senders and passes the header as
the first vector to sendmsg(), thus it can send a logger-specific header
in each message.
A new logger arguments "format rfc5424" should be used in order to enable
RFC5424 header format. For example:
log 10.2.3.4:1234 len 2048 format rfc5424 local2 info
diff --git a/include/types/log.h b/include/types/log.h
index 0214ae6..2cfd31a 100644
--- a/include/types/log.h
+++ b/include/types/log.h
@@ -37,6 +37,13 @@
/* The array containing the names of the log levels. */
extern const char *log_levels[];
+/* enum for log format */
+enum {
+ LOG_FORMAT_RFC3164 = 0,
+ LOG_FORMAT_RFC5424,
+ LOG_FORMATS, /* number of supported log formats, must always be last */
+};
+
/* lists of fields that can be logged */
enum {
@@ -158,6 +165,7 @@
struct logsrv {
struct list list;
struct sockaddr_storage addr;
+ int format;
int facility;
int level;
int minlvl;
diff --git a/include/types/proxy.h b/include/types/proxy.h
index 1400126..9793a29 100644
--- a/include/types/proxy.h
+++ b/include/types/proxy.h
@@ -346,7 +346,8 @@
struct list logsrvs;
struct list logformat; /* log_format linked list */
char *log_tag; /* override default syslog tag */
- struct chunk log_htp; /* a syslog header part that contains hostname, log_tag and pid */
+ struct chunk log_htp; /* a syslog header part that contains hostname, log_tag and pid (RFC3164 format) */
+ struct chunk log_htp_rfc5424; /* a syslog header part that contains hostname, log_tag and pid (RFC5424 format) */
char *header_unique_id; /* unique-id header */
struct list format_unique_id; /* unique-id format */
int to_log; /* things to be logged (LW_*) */