#include #include #include #include #include "log.h" std::string log_entries; std::string format_log(std::string entry, time_t time) { size_t newline_pos; char time_as_str[128] = {0}; strftime(time_as_str, 127 * sizeof(char), "%c", localtime(&time)); while ((newline_pos = entry.find('\n')) != std::string::npos) { entry.replace(newline_pos, 1, 1, ' '); } return std::string(1, '[') + time_as_str + "] " + std::move(entry); } std::string format_log(std::string entry) { return format_log(std::move(entry), time(nullptr)); } void log_raw(std::string line) { printf("%s\n", line.c_str()); if (!log_entries.empty()) { log_entries += '\n'; } log_entries += std::move(line); } void log(std::string entry, time_t time) { log_raw(format_log(std::move(entry), time)); } void log(std::string entry) { log_raw(format_log(std::move(entry))); }