diff options
-rw-r--r-- | amalgamate/crow_all.h | 151 | ||||
-rw-r--r-- | include/http_connection.h | 6 |
2 files changed, 79 insertions, 78 deletions
diff --git a/amalgamate/crow_all.h b/amalgamate/crow_all.h index a52eb1f..5742e54 100644 --- a/amalgamate/crow_all.h +++ b/amalgamate/crow_all.h @@ -4791,85 +4791,85 @@ using namespace std; namespace crow { - enum class LogLevel - { - DEBUG, - INFO, - WARNING, - ERROR, - CRITICAL, - }; - - class ILogHandler { - public: - virtual void log(string message, LogLevel level) = 0; - }; - - class CerrLogHandler : public ILogHandler { - public: - void log(string message, LogLevel level) override { - cerr << message; - } - }; + enum class LogLevel + { + DEBUG, + INFO, + WARNING, + ERROR, + CRITICAL, + }; - class logger { + class ILogHandler { + public: + virtual void log(string message, LogLevel level) = 0; + }; - private: - // - static string timestamp() - { - char date[32]; - time_t t = time(0); - strftime(date, sizeof(date), "%Y-%m-%d %H:%M:%S", gmtime(&t)); - return string(date); - } + class CerrLogHandler : public ILogHandler { + public: + void log(string message, LogLevel level) override { + cerr << message; + } + }; - public: + class logger { + private: + // + static string timestamp() + { + char date[32]; + time_t t = time(0); + strftime(date, sizeof(date), "%Y-%m-%d %H:%M:%S", gmtime(&t)); + return string(date); + } - logger(string prefix, LogLevel level) : level_(level) { - #ifdef CROW_ENABLE_LOGGING - stringstream_ << "(" << timestamp() << ") [" << prefix << "] "; - #endif + public: - } - ~logger() { - #ifdef CROW_ENABLE_LOGGING - if(level_ >= get_current_log_level()) { - stringstream_ << endl; - get_handler_ref()->log(stringstream_.str(), level_); - } - #endif - } - // - template <typename T> - logger& operator<<(T const &value) { + logger(string prefix, LogLevel level) : level_(level) { + #ifdef CROW_ENABLE_LOGGING + stringstream_ << "(" << timestamp() << ") [" << prefix << "] "; + #endif - #ifdef CROW_ENABLE_LOGGING - if(level_ >= get_current_log_level()) { - stringstream_ << value; - } - #endif - return *this; - } + } + ~logger() { + #ifdef CROW_ENABLE_LOGGING + if(level_ >= get_current_log_level()) { + stringstream_ << endl; + get_handler_ref()->log(stringstream_.str(), level_); + } + #endif + } - // - static void setLogLevel(LogLevel level) { - get_log_level_ref() = level; - } + // + template <typename T> + logger& operator<<(T const &value) { - static void setHandler(ILogHandler* handler) { - get_handler_ref() = handler; - } + #ifdef CROW_ENABLE_LOGGING + if(level_ >= get_current_log_level()) { + stringstream_ << value; + } + #endif + return *this; + } + + // + static void setLogLevel(LogLevel level) { + get_log_level_ref() = level; + } + + static void setHandler(ILogHandler* handler) { + get_handler_ref() = handler; + } static LogLevel get_current_log_level() { return get_log_level_ref(); } - private: - // - static LogLevel& get_log_level_ref() + private: + // + static LogLevel& get_log_level_ref() { static LogLevel current_level = (LogLevel)CROW_LOG_LEVEL; return current_level; @@ -4881,17 +4881,17 @@ namespace crow return current_handler; } - // - ostringstream stringstream_; - LogLevel level_; - }; + // + ostringstream stringstream_; + LogLevel level_; + }; } -#define CROW_LOG_CRITICAL crow::logger("CRITICAL", crow::LogLevel::CRITICAL) -#define CROW_LOG_ERROR crow::logger("ERROR ", crow::LogLevel::ERROR) -#define CROW_LOG_WARNING crow::logger("WARNING ", crow::LogLevel::WARNING) -#define CROW_LOG_INFO crow::logger("INFO ", crow::LogLevel::INFO) -#define CROW_LOG_DEBUG crow::logger("DEBUG ", crow::LogLevel::DEBUG) +#define CROW_LOG_CRITICAL crow::logger("CRITICAL", crow::LogLevel::CRITICAL) +#define CROW_LOG_ERROR crow::logger("ERROR ", crow::LogLevel::ERROR) +#define CROW_LOG_WARNING crow::logger("WARNING ", crow::LogLevel::WARNING) +#define CROW_LOG_INFO crow::logger("INFO ", crow::LogLevel::INFO) +#define CROW_LOG_DEBUG crow::logger("DEBUG ", crow::LogLevel::DEBUG) @@ -5540,11 +5540,12 @@ namespace crow { CROW_LOG_INFO << "Response: " << this << ' ' << res.code << ' ' << close_connection_; + auto self = this->shared_from_this(); + res.complete_request_handler_ = nullptr; + if (!socket_.is_open()) return; - auto self = this->shared_from_this(); - res.complete_request_handler_ = nullptr; static std::unordered_map<int, std::string> statusCodes = { {200, "HTTP/1.1 200 OK\r\n"}, diff --git a/include/http_connection.h b/include/http_connection.h index a030d73..04ffa3f 100644 --- a/include/http_connection.h +++ b/include/http_connection.h @@ -113,11 +113,11 @@ namespace crow { CROW_LOG_INFO << "Response: " << this << ' ' << res.code << ' ' << close_connection_; - if (!socket_.is_open()) - return; - auto self = this->shared_from_this(); res.complete_request_handler_ = nullptr; + + if (!socket_.is_open()) + return; static std::unordered_map<int, std::string> statusCodes = { {200, "HTTP/1.1 200 OK\r\n"}, |