From c543525c1bc54b0db4701b2780bb3f27e01dc014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Mon, 13 Aug 2018 15:50:05 +0300 Subject: [PATCH] MXS-2005: Move Logger into maxutils Moved the logger into the maxutils library as it is a generic utility. Also moved mxs_strerror into it as it depends on it. --- maxutils/maxbase/include/maxbase/error.h | 29 +++++++++++++++++++ .../maxbase/include/maxbase}/logger.hh | 4 +-- maxutils/maxbase/src/CMakeLists.txt | 2 +- .../core => maxutils/maxbase/src}/logger.cc | 17 ++++++----- server/core/CMakeLists.txt | 1 - server/core/log_manager.cc | 21 +++++--------- 6 files changed, 49 insertions(+), 25 deletions(-) create mode 100644 maxutils/maxbase/include/maxbase/error.h rename {server/core/internal => maxutils/maxbase/include/maxbase}/logger.hh (98%) rename {server/core => maxutils/maxbase/src}/logger.cc (94%) diff --git a/maxutils/maxbase/include/maxbase/error.h b/maxutils/maxbase/include/maxbase/error.h new file mode 100644 index 000000000..8172935e6 --- /dev/null +++ b/maxutils/maxbase/include/maxbase/error.h @@ -0,0 +1,29 @@ +#pragma once +/* + * Copyright (c) 2016 MariaDB Corporation Ab + * + * Use of this software is governed by the Business Source License included + * in the LICENSE.TXT file and at www.mariadb.com/bsl11. + * + * Change Date: 2022-01-01 + * + * On the date above, in accordance with the Business Source License, use + * of this software will be governed by version 2 or later of the General + * Public License. + */ + +#include + +#include + +inline const char* mxb_strerror(int error) +{ + // Enough for all errors + static thread_local char errbuf[512]; +#ifdef HAVE_GLIBC + return strerror_r(error, errbuf, sizeof(errbuf)); +#else + strerror_r(error, errbuf, sizeof(errbuf)); + return errbuf; +#endif +} diff --git a/server/core/internal/logger.hh b/maxutils/maxbase/include/maxbase/logger.hh similarity index 98% rename from server/core/internal/logger.hh rename to maxutils/maxbase/include/maxbase/logger.hh index eef0f09f4..301a8dc0f 100644 --- a/server/core/internal/logger.hh +++ b/maxutils/maxbase/include/maxbase/logger.hh @@ -12,7 +12,7 @@ * Public License. */ -#include +#include #include #include @@ -20,7 +20,7 @@ #include -namespace maxscale +namespace maxbase { // Minimal logger interface diff --git a/maxutils/maxbase/src/CMakeLists.txt b/maxutils/maxbase/src/CMakeLists.txt index cf31c21ef..59cac15a1 100644 --- a/maxutils/maxbase/src/CMakeLists.txt +++ b/maxutils/maxbase/src/CMakeLists.txt @@ -1,3 +1,3 @@ -add_library(maxbase STATIC eventcount.cc stopwatch.cc stacktrace.cc) +add_library(maxbase STATIC eventcount.cc stopwatch.cc stacktrace.cc logger.cc) set_target_properties(maxbase PROPERTIES VERSION "1.0.0" LINK_FLAGS -Wl,-z,defs) install(TARGETS maxbase DESTINATION lib) diff --git a/server/core/logger.cc b/maxutils/maxbase/src/logger.cc similarity index 94% rename from server/core/logger.cc rename to maxutils/maxbase/src/logger.cc index 1260dd257..4d74eea66 100644 --- a/server/core/logger.cc +++ b/maxutils/maxbase/src/logger.cc @@ -11,7 +11,7 @@ * Public License. */ -#include "internal/logger.hh" +#include #include #include @@ -22,7 +22,10 @@ #include #include -#include +#include + +// TODO: move into maxbase +#define ss_dassert(a) /** * Error logging for the logger itself. @@ -44,7 +47,7 @@ int open_fd(const std::string& filename) if (fd == -1) { - LOG_ERROR("Failed to open file '%s': %d, %s\n", filename.c_str(), errno, mxs_strerror(errno)); + LOG_ERROR("Failed to open file '%s': %d, %s\n", filename.c_str(), errno, mxb_strerror(errno)); } return fd; @@ -68,7 +71,7 @@ bool should_log_error() } -namespace maxscale +namespace maxbase { // @@ -122,7 +125,7 @@ bool FileLogger::write(const char* msg, int len) { if (should_log_error()) // Coarse error suppression { - LOG_ERROR("Failed to write to log: %d, %s\n", errno, mxs_strerror(errno)); + LOG_ERROR("Failed to write to log: %d, %s\n", errno, mxb_strerror(errno)); } rval = false; @@ -194,7 +197,7 @@ bool FileLogger::write_header() if (!ok) { LOG_ERROR("Error: Writing log header failed due to %d, %s\n", - errno, mxs_strerror(errno)); + errno, mxb_strerror(errno)); } return ok; @@ -228,7 +231,7 @@ bool FileLogger::write_footer(const char* suffix) if (!ok) { LOG_ERROR("Error: Writing log footer failed due to %d, %s\n", - errno, mxs_strerror(errno)); + errno, mxb_strerror(errno)); } return ok; diff --git a/server/core/CMakeLists.txt b/server/core/CMakeLists.txt index 0d6fcbb27..07a3f7b91 100644 --- a/server/core/CMakeLists.txt +++ b/server/core/CMakeLists.txt @@ -22,7 +22,6 @@ add_library(maxscale-common SHARED listener.cc load_utils.cc log_manager.cc - logger.cc mariadb.cc maxscale_pcre2.cc misc.cc diff --git a/server/core/log_manager.cc b/server/core/log_manager.cc index 95ee2e9b7..0bd751d8f 100644 --- a/server/core/log_manager.cc +++ b/server/core/log_manager.cc @@ -21,17 +21,16 @@ #include #include +#include +#include + #include #include #include #include #include -#include "internal/logger.hh" - -using namespace maxscale; - -static std::unique_ptr logger; +static std::unique_ptr logger; const std::string LOGFILE_NAME = "maxscale.log"; @@ -329,11 +328,11 @@ bool mxs_log_init(const char* ident, const char* logdir, mxs_log_target_t target { case MXS_LOG_TARGET_FS: case MXS_LOG_TARGET_DEFAULT: - logger = FileLogger::create(filename); + logger = mxb::FileLogger::create(filename); break; case MXS_LOG_TARGET_STDOUT: - logger = StdoutLogger::create(filename); + logger = mxb::StdoutLogger::create(filename); break; default: @@ -864,13 +863,7 @@ int mxs_log_message(int priority, const char* mxs_strerror(int error) { - static thread_local char errbuf[MXS_STRERROR_BUFLEN]; -#ifdef HAVE_GLIBC - return strerror_r(error, errbuf, sizeof(errbuf)); -#else - strerror_r(error, errbuf, sizeof(errbuf)); - return errbuf; -#endif + return mxb_strerror(error); } json_t* get_log_priorities()