void open_logfile(struct log_file *file);
void rotate_logs(struct log_file *file);
+int write_with_rotation(struct logger_entry *e, struct log_file *file);
#endif /* _LOG_FILE_H */
from += ple->len;
from %= buffer->size;
+ if (plaintext) {
+ write_with_rotation(ple, &reader->file);
+ continue;
+ }
+
priority = ple->msg[0];
if (priority < 0 || priority > DLOG_SILENT)
continue;
ret = 1;
goto cleanup_remove;
}
- } else if (plaintext) {
- log_entry le;
- r = !log_process_log_buffer(ple, &le) && log_should_print_line(reader->file.format, le.tag, le.priority);
- if (r)
- r = log_print_log_line(reader->file.format, reader->file.fd, &le);
- else {
- ret = 1;
- goto cleanup_remove;
- }
} else {
if (g_file_buffer.len + ple->len >= BUFFER_MAX)
if (write_blob_to_file(reader, &g_file_buffer) < 0)
}
reader->file.size += r;
- if (!plaintext && r < ple->len) {
+ if (r < ple->len) {
reader->partial_log_size = ple->len - r;
memcpy(reader->partial_log, ple + r, reader->partial_log_size);
goto cleanup_remove;
} else if ((reader->file.rotate_size_kbytes > 0) &&
(BtoKiB(reader->file.size) >= reader->file.rotate_size_kbytes)) {
- if (!plaintext && write_blob_to_file(reader, &g_file_buffer) < 0)
+ if (write_blob_to_file(reader, &g_file_buffer) < 0)
goto cleanup_remove;
rotate_logs(&reader->file);
- if (!plaintext) {
- r = add_misc_file_info(reader->file.fd);
- if (r < 0) {
- ret = 1;
- goto cleanup_remove;
- }
+ r = add_misc_file_info(reader->file.fd);
+ if (r < 0) {
+ ret = 1;
+ goto cleanup_remove;
}
}
}
add_recv_timestamp(entry);
- if (r) {
- log_entry le;
- if (entry->len > (sizeof(struct logger_entry) + 2)
- && entry->msg[0] >= 0 && entry->msg[0] <= DLOG_SILENT
- && strlen(entry->msg + 1)
- && log_should_print_line(reader->file.format, entry->msg + 1, entry->msg[0])
- && !log_process_log_buffer(entry, &le)) {
- int written_bytes = log_print_log_line(reader->file.format, reader->file.fd, &le);
- if (written_bytes > 0) {
- reader->file.size += written_bytes;
- if ((reader->file.rotate_size_kbytes > 0) &&
- (BtoKiB(reader->file.size) >= reader->file.rotate_size_kbytes))
- rotate_logs(&reader->file);
- }
- }
- }
+ if (r)
+ write_with_rotation((struct logger_entry *) buffer, &reader->file);
}
}
}
if (sort_timeout <= (s*1000 + ns/1000000)) {
- log_entry entry;
- if (log_process_log_buffer(e, & entry) || !log_should_print_line(l_file.format, entry.tag, entry.priority))
- return 1;
- int written_bytes = log_print_log_line(l_file.format, l_file.fd, & entry);
- if (written_bytes > 0)
- l_file.size += written_bytes;
- if ((l_file.rotate_size_kbytes > 0) && (BtoKiB(l_file.size) >= l_file.rotate_size_kbytes))
- rotate_logs(&l_file);
+ write_with_rotation(e, &l_file);
return 1;
} else
return 0;
memcpy(temp, fdi->buff, e->len);
fdi->index -= e->len;
memmove(fdi->buff, fdi->buff + e->len, RECEIVE_BUFFER_SIZE - e->len);
+
if (fdi->do_sorting) {
if (push_log(temp) < 0)
free(temp);
} else {
- log_entry entry;
- if (!log_process_log_buffer(temp, &entry) && log_should_print_line(l_file.format, entry.tag, entry.priority)) {
- r = log_print_log_line(l_file.format, l_file.fd, &entry);
- if (r > 0)
- l_file.size += r;
- if ((l_file.rotate_size_kbytes > 0) &&
- (BtoKiB(l_file.size) >= l_file.rotate_size_kbytes))
- rotate_logs(&l_file);
- if (dump && !--dump) {
- looping = 0;
- break;
- }
- }
+ int write_err = write_with_rotation(temp, &l_file);
free(temp);
+ if (!write_err && dump && !--dump) {
+ looping = 0;
+ break;
+ }
}
}
}
}
/**
+ * @brief Write with rotation
+ * @details Writes the entry to given file, automatically handling file rotation
+ * @param[in] e The entry to write
+ * @param[in] file The file to write to
+ * @returns 0 if log was successfully written, else 1
+ */
+int write_with_rotation(struct logger_entry* e, struct log_file* file)
+{
+ log_entry entry;
+ if (log_process_log_buffer(e, &entry) || !log_should_print_line(file->format, entry.tag, entry.priority))
+ return 1;
+ int written_bytes = log_print_log_line(file->format, file->fd, &entry);
+ if (written_bytes <= 0)
+ return 1;
+ file->size += written_bytes;
+ if ((file->rotate_size_kbytes > 0) && (BtoKiB(file->size) >= file->rotate_size_kbytes))
+ rotate_logs(file);
+ return 0;
+}
+
+/**
* @}
*/