diff --git a/webcc/http_client.cc b/webcc/http_client.cc index 0ffc7a2..9223072 100644 --- a/webcc/http_client.cc +++ b/webcc/http_client.cc @@ -107,7 +107,7 @@ Error HttpClient::Connect(const HttpRequest& request) { io_context_.run_one(); } while (ec == boost::asio::error::would_block); - // Determine whether a connection was successfully established. + // Determine whether a connection was successfully established. if (ec) { LOG_ERRO("Socket connect error: %s", ec.message().c_str()); Stop(); @@ -115,7 +115,7 @@ Error HttpClient::Connect(const HttpRequest& request) { } LOG_VERB("Socket connected."); - + // The deadline actor may have had a chance to run and close our socket, even // though the connect operation notionally succeeded. if (stopped_) { diff --git a/webcc/logger.cc b/webcc/logger.cc index 071c489..24abdc5 100644 --- a/webcc/logger.cc +++ b/webcc/logger.cc @@ -121,38 +121,53 @@ static std::string GetThreadID() { return ss.str(); } -static void WriteToFile(FILE* fd, int level, const char* file, int line, - const char* format, va_list args) { - std::lock_guard lock(g_logger.mutex); +void LogWrite(int level, const char* file, int line, const char* format, ...) { + assert(format != nullptr); - fprintf(fd, "%s, %s, %7s, %24s, %4d, ", - GetTimestamp().c_str(), kLevelNames[level], GetThreadID().c_str(), - file, line); + std::string timestamp = GetTimestamp(); + std::string thread_id = GetThreadID(); - vfprintf(fd, format, args); + if ((g_logger.modes & LOG_FILE) != 0 && g_logger.file != nullptr) { + std::lock_guard lock(g_logger.mutex); - fprintf(fd, "\n"); + va_list args; + va_start(args, format); - if ((g_logger.modes & LOG_FLUSH) != 0) { - fflush(fd); - } -} + fprintf(g_logger.file, "%s, %s, %7s, %24s, %4d, ", + timestamp.c_str(), kLevelNames[level], thread_id.c_str(), + file, line); -void LogWrite(int level, const char* file, int line, const char* format, ...) { - assert(format != nullptr); + vfprintf(g_logger.file, format, args); - va_list args; - va_start(args, format); + fprintf(g_logger.file, "\n"); - if ((g_logger.modes & LOG_FILE) != 0 && g_logger.file != nullptr) { - WriteToFile(g_logger.file, level, file, line, format, args); + if ((g_logger.modes & LOG_FLUSH) != 0) { + fflush(g_logger.file); + } + + va_end(args); } if ((g_logger.modes & LOG_CONSOLE) != 0) { - WriteToFile(stderr, level, file, line, format, args); - } + std::lock_guard lock(g_logger.mutex); + + va_list args; + va_start(args, format); + + fprintf(stderr, "%s, %s, %7s, %24s, %4d, ", + timestamp.c_str(), kLevelNames[level], thread_id.c_str(), + file, line); + + vfprintf(stderr, format, args); - va_end(args); + fprintf(stderr, "\n"); + + if ((g_logger.modes & LOG_FLUSH) != 0) { + fflush(stderr); + } + + va_end(args); + } } } // namespace webcc