log_config.inited = 1;
- LOG(log_note, logtype_logger, "Set syslog logging to level: %s",
+ LOG(log_info, logtype_logger, "Set syslog logging to level: %s",
arr_loglevel_strings[loglevel]);
}
temp_buffer[len+1] = 0;
}
+ if (type_configs[logtype].level >= log_debug)
+ goto log; /* bypass flooding checks */
+
/* Prevent flooding: hash the message and check if we got the same one recently */
int hash = hash_message(temp_buffer) + log_src_linenumber;
/* yes, log it and remove from array */
/* reusing log_details_buffer */
- sprintf(log_details_buffer, "message repeated %i times: ", LOG_FLOODING_MAXCOUNT - 1);
- iov[0].iov_base = log_details_buffer;
- iov[0].iov_len = strlen(log_details_buffer);
- iov[1].iov_base = temp_buffer;
- iov[1].iov_len = strlen(temp_buffer);
-
- /* Write "message repeated x times: ..." to log */
- writev( fd, iov, 2);
+ sprintf(log_details_buffer, "message repeated %i times\n",
+ LOG_FLOODING_MAXCOUNT - 1);
+ write(fd, log_details_buffer, strlen(log_details_buffer));
if ((i + 1) == LOG_FLOODING_ARRAY_SIZE) {
/* last array element, just decrement count */
/* reusing log_details_buffer */
sprintf(log_details_buffer, "message repeated %i times\n",
log_flood_array[0].count - LOG_FLOODING_MINCOUNT + 1);
- /* Write "message repeated x times: ..." to log */
write(fd, log_details_buffer, strlen(log_details_buffer));
}
for (int i = 1; i < LOG_FLOODING_ARRAY_SIZE; i++) {