extern char default_rfc5424_sd_log_format[];
+extern unsigned int dropped_logs;
+
extern THREAD_LOCAL char *logheader;
extern THREAD_LOCAL char *logheader_rfc5424;
extern THREAD_LOCAL char *logline;
INF_LISTENERS,
INF_ACTIVE_PEERS,
INF_CONNECTED_PEERS,
+ INF_DROPPED_LOGS,
/* must always be the last one */
INF_TOTAL_FIELDS
*/
char default_rfc5424_sd_log_format[] = "- ";
+/* total number of dropped logs */
+unsigned int dropped_logs = 0;
+
/* This is a global syslog header, common to all outgoing messages in
* RFC3164 format. It begins with time-based part and is updated by
* update_log_hdr().
if (sent < 0) {
static char once;
- if (!once) {
+ if (errno == EAGAIN)
+ HA_ATOMIC_ADD(&dropped_logs, 1);
+ else if (!once) {
once = 1; /* note: no need for atomic ops here */
ha_alert("sendmsg() failed in logger #%d: %s (errno=%d)\n",
nblogger, strerror(errno), errno);
[INF_LISTENERS] = "Listeners",
[INF_ACTIVE_PEERS] = "ActivePeers",
[INF_CONNECTED_PEERS] = "ConnectedPeers",
+ [INF_DROPPED_LOGS] = "DroppedLogs",
};
const char *stat_field_names[ST_F_TOTAL_FIELDS] = {
info[INF_LISTENERS] = mkf_u32(0, listeners);
info[INF_ACTIVE_PEERS] = mkf_u32(0, active_peers);
info[INF_CONNECTED_PEERS] = mkf_u32(0, connected_peers);
+ info[INF_DROPPED_LOGS] = mkf_u32(0, dropped_logs);
return 1;
}