This is an automated email from the ASF dual-hosted git repository. pnoltes pushed a commit to branch feature/scheduled_event_on_event_thread in repository https://gitbox.apache.org/repos/asf/celix.git
commit eda55fbeb0d38115bf9819cf2d229b3868057f9a Author: Pepijn Noltes <[email protected]> AuthorDate: Sun Jun 25 18:44:33 2023 +0200 Move log level toString/fromString functions to log level header/impl --- libs/utils/CMakeLists.txt | 3 +- libs/utils/gtest/CMakeLists.txt | 1 + libs/utils/gtest/src/LogTestSuite.cc | 56 ++++++++++++++++++ libs/utils/gtest/src/LogUtilsTestSuite.cc | 28 +-------- libs/utils/include/celix_log_level.h | 46 ++++++++++++--- libs/utils/include/celix_log_utils.h | 20 +++---- libs/utils/src/celix_log_level.c | 97 +++++++++++++++++++++++++++++++ libs/utils/src/celix_log_utils.c | 68 +++------------------- 8 files changed, 214 insertions(+), 105 deletions(-) diff --git a/libs/utils/CMakeLists.txt b/libs/utils/CMakeLists.txt index eca64811..e9362dc0 100644 --- a/libs/utils/CMakeLists.txt +++ b/libs/utils/CMakeLists.txt @@ -40,6 +40,7 @@ set(UTILS_SRC src/utils.c src/ip_utils.c src/filter.c + src/celix_log_level.c src/celix_log_utils.c src/celix_hash_map.c src/celix_file_utils.c @@ -51,7 +52,7 @@ set(UTILS_SRC set(UTILS_PRIVATE_DEPS libzip::libzip) set(UTILS_PUBLIC_DEPS) -add_library(utils SHARED ${UTILS_SRC}) +add_library(utils SHARED ${UTILS_SRC} src/celix_log_level.c) target_link_libraries(utils PRIVATE libzip::libzip) set_target_properties(utils diff --git a/libs/utils/gtest/CMakeLists.txt b/libs/utils/gtest/CMakeLists.txt index 06af219d..d6811a96 100644 --- a/libs/utils/gtest/CMakeLists.txt +++ b/libs/utils/gtest/CMakeLists.txt @@ -24,6 +24,7 @@ set(CELIX_UTIL_TEST_SOURCES_FOR_CXX_HEADERS ) add_executable(test_utils + src/LogTestSuite.cc src/LogUtilsTestSuite.cc src/VersionRangeTestSuite.cc src/TimeUtilsTestSuite.cc diff --git a/libs/utils/gtest/src/LogTestSuite.cc b/libs/utils/gtest/src/LogTestSuite.cc new file mode 100644 index 00000000..14d57651 --- /dev/null +++ b/libs/utils/gtest/src/LogTestSuite.cc @@ -0,0 +1,56 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#include <gtest/gtest.h> + +#include "celix_log_level.h" + +class LogTestSuite : public ::testing::Test {}; + +TEST_F(LogTestSuite, LogLevelToString) { + EXPECT_STREQ("trace", celix_logLevel_toString(CELIX_LOG_LEVEL_TRACE)); + EXPECT_STREQ("debug", celix_logLevel_toString(CELIX_LOG_LEVEL_DEBUG)); + EXPECT_STREQ("info", celix_logLevel_toString(CELIX_LOG_LEVEL_INFO)); + EXPECT_STREQ("warning", celix_logLevel_toString(CELIX_LOG_LEVEL_WARNING)); + EXPECT_STREQ("error", celix_logLevel_toString(CELIX_LOG_LEVEL_ERROR)); + EXPECT_STREQ("fatal", celix_logLevel_toString(CELIX_LOG_LEVEL_FATAL)); + EXPECT_STREQ("disabled", celix_logLevel_toString(CELIX_LOG_LEVEL_DISABLED)); +} + +TEST_F(LogTestSuite, LogLevelFromString) { + EXPECT_EQ(CELIX_LOG_LEVEL_TRACE, celix_logLevel_fromString("trace", CELIX_LOG_LEVEL_DISABLED)); + EXPECT_EQ(CELIX_LOG_LEVEL_DEBUG, celix_logLevel_fromString("debug", CELIX_LOG_LEVEL_DISABLED)); + EXPECT_EQ(CELIX_LOG_LEVEL_INFO, celix_logLevel_fromString("info", CELIX_LOG_LEVEL_DISABLED)); + EXPECT_EQ(CELIX_LOG_LEVEL_WARNING, celix_logLevel_fromString("warning", CELIX_LOG_LEVEL_DISABLED)); + EXPECT_EQ(CELIX_LOG_LEVEL_ERROR, celix_logLevel_fromString("error", CELIX_LOG_LEVEL_DISABLED)); + EXPECT_EQ(CELIX_LOG_LEVEL_FATAL, celix_logLevel_fromString("fatal", CELIX_LOG_LEVEL_DISABLED)); + EXPECT_EQ(CELIX_LOG_LEVEL_DISABLED, celix_logLevel_fromString("disabled", CELIX_LOG_LEVEL_DISABLED)); + + + EXPECT_EQ(CELIX_LOG_LEVEL_DISABLED, celix_logLevel_fromString(nullptr, CELIX_LOG_LEVEL_DISABLED)); + EXPECT_EQ(CELIX_LOG_LEVEL_DISABLED, celix_logLevel_fromString("garbage", CELIX_LOG_LEVEL_DISABLED)); + + bool converted; + EXPECT_EQ(CELIX_LOG_LEVEL_FATAL, celix_logLevel_fromStringWithCheck("fatal", CELIX_LOG_LEVEL_DISABLED, &converted)); + EXPECT_TRUE(converted); + EXPECT_EQ(CELIX_LOG_LEVEL_DISABLED, celix_logLevel_fromStringWithCheck(nullptr, CELIX_LOG_LEVEL_DISABLED, &converted)); + EXPECT_FALSE(converted); + EXPECT_EQ(CELIX_LOG_LEVEL_DISABLED, celix_logLevel_fromStringWithCheck("garbage", CELIX_LOG_LEVEL_DISABLED, &converted)); + EXPECT_FALSE(converted); +} diff --git a/libs/utils/gtest/src/LogUtilsTestSuite.cc b/libs/utils/gtest/src/LogUtilsTestSuite.cc index f0062b04..067d7ace 100644 --- a/libs/utils/gtest/src/LogUtilsTestSuite.cc +++ b/libs/utils/gtest/src/LogUtilsTestSuite.cc @@ -25,34 +25,12 @@ class LogUtilsTestSuite : public ::testing::Test {}; TEST_F(LogUtilsTestSuite, LogLevelToString) { EXPECT_STREQ("trace", celix_logUtils_logLevelToString(CELIX_LOG_LEVEL_TRACE)); - EXPECT_STREQ("debug", celix_logUtils_logLevelToString(CELIX_LOG_LEVEL_DEBUG)); - EXPECT_STREQ("info", celix_logUtils_logLevelToString(CELIX_LOG_LEVEL_INFO)); - EXPECT_STREQ("warning", celix_logUtils_logLevelToString(CELIX_LOG_LEVEL_WARNING)); - EXPECT_STREQ("error", celix_logUtils_logLevelToString(CELIX_LOG_LEVEL_ERROR)); - EXPECT_STREQ("fatal", celix_logUtils_logLevelToString(CELIX_LOG_LEVEL_FATAL)); - EXPECT_STREQ("disabled", celix_logUtils_logLevelToString(CELIX_LOG_LEVEL_DISABLED)); + //note rest is tested in LogTestSuite } TEST_F(LogUtilsTestSuite, LogLevelFromString) { EXPECT_EQ(CELIX_LOG_LEVEL_TRACE, celix_logUtils_logLevelFromString("trace", CELIX_LOG_LEVEL_DISABLED)); - EXPECT_EQ(CELIX_LOG_LEVEL_DEBUG, celix_logUtils_logLevelFromString("debug", CELIX_LOG_LEVEL_DISABLED)); - EXPECT_EQ(CELIX_LOG_LEVEL_INFO, celix_logUtils_logLevelFromString("info", CELIX_LOG_LEVEL_DISABLED)); - EXPECT_EQ(CELIX_LOG_LEVEL_WARNING, celix_logUtils_logLevelFromString("warning", CELIX_LOG_LEVEL_DISABLED)); - EXPECT_EQ(CELIX_LOG_LEVEL_ERROR, celix_logUtils_logLevelFromString("error", CELIX_LOG_LEVEL_DISABLED)); - EXPECT_EQ(CELIX_LOG_LEVEL_FATAL, celix_logUtils_logLevelFromString("fatal", CELIX_LOG_LEVEL_DISABLED)); - EXPECT_EQ(CELIX_LOG_LEVEL_DISABLED, celix_logUtils_logLevelFromString("disabled", CELIX_LOG_LEVEL_DISABLED)); - - - EXPECT_EQ(CELIX_LOG_LEVEL_DISABLED, celix_logUtils_logLevelFromString(nullptr, CELIX_LOG_LEVEL_DISABLED)); - EXPECT_EQ(CELIX_LOG_LEVEL_DISABLED, celix_logUtils_logLevelFromString("garbage", CELIX_LOG_LEVEL_DISABLED)); - - bool converted; - EXPECT_EQ(CELIX_LOG_LEVEL_FATAL, celix_logUtils_logLevelFromStringWithCheck("fatal", CELIX_LOG_LEVEL_DISABLED, &converted)); - EXPECT_TRUE(converted); - EXPECT_EQ(CELIX_LOG_LEVEL_DISABLED, celix_logUtils_logLevelFromStringWithCheck(nullptr, CELIX_LOG_LEVEL_DISABLED, &converted)); - EXPECT_FALSE(converted); - EXPECT_EQ(CELIX_LOG_LEVEL_DISABLED, celix_logUtils_logLevelFromStringWithCheck("garbage", CELIX_LOG_LEVEL_DISABLED, &converted)); - EXPECT_FALSE(converted); + //note rest is tested in LogTestSuite } TEST_F(LogUtilsTestSuite, LogToStdout) { @@ -71,4 +49,4 @@ TEST_F(LogUtilsTestSuite, LogToStdout) { EXPECT_TRUE(strstr(stdOutput.c_str(), "ignore") == nullptr); EXPECT_TRUE(strstr(errOutput.c_str(), "testing_stderr 1 2 3") != nullptr); EXPECT_TRUE(strstr(stdOutput.c_str(), "ignore") == nullptr); -} \ No newline at end of file +} diff --git a/libs/utils/include/celix_log_level.h b/libs/utils/include/celix_log_level.h index 82554298..67974e04 100644 --- a/libs/utils/include/celix_log_level.h +++ b/libs/utils/include/celix_log_level.h @@ -20,22 +20,52 @@ #ifndef CELIX_LOG_LEVEL_H #define CELIX_LOG_LEVEL_H +#include <stdbool.h> + +#include "celix_utils_export.h" + #ifdef __cplusplus extern "C" { #endif typedef enum celix_log_level { - CELIX_LOG_LEVEL_TRACE = 0, - CELIX_LOG_LEVEL_DEBUG = 1, - CELIX_LOG_LEVEL_INFO = 2, - CELIX_LOG_LEVEL_WARNING = 3, - CELIX_LOG_LEVEL_ERROR = 4, - CELIX_LOG_LEVEL_FATAL = 5, - CELIX_LOG_LEVEL_DISABLED = 6 + CELIX_LOG_LEVEL_TRACE = 0, + CELIX_LOG_LEVEL_DEBUG = 1, + CELIX_LOG_LEVEL_INFO = 2, + CELIX_LOG_LEVEL_WARNING = 3, + CELIX_LOG_LEVEL_ERROR = 4, + CELIX_LOG_LEVEL_FATAL = 5, + CELIX_LOG_LEVEL_DISABLED = 6 } celix_log_level_e; +/** + * @brief Converts a log level to a string. + * @param level The log level to convert. + * @return The string representation of the log level. + */ +CELIX_UTILS_EXPORT const char* celix_logLevel_toString(celix_log_level_e level); + +/** + * @brief Converts a string to a log level. + * @param[in] str The string to convert. + * @param[in] fallbackLogLevel The log level to return if the string is not a valid log level. + * @return The log level. + */ +CELIX_UTILS_EXPORT celix_log_level_e celix_logLevel_fromString(const char* str, celix_log_level_e fallbackLogLevel); + +/** + * @brief Converts a string to a log level. + * @param[in] str The string to convert. + * @param[in] fallbackLogLevel The log level to return if the string is not a valid log level. + * @param[out] convertedSuccessfully A pointer to a boolean which will be set to true if the string is a valid log + * level, false otherwise. Can be NULL if the caller is not interested in this information. + * @return The log level. + */ +CELIX_UTILS_EXPORT celix_log_level_e +celix_logLevel_fromStringWithCheck(const char* str, celix_log_level_e fallbackLogLevel, bool* convertedSuccessfully); + #ifdef __cplusplus }; #endif -#endif //CELIX_LOG_LEVEL_H +#endif // CELIX_LOG_LEVEL_H diff --git a/libs/utils/include/celix_log_utils.h b/libs/utils/include/celix_log_utils.h index 92d21e67..3eecdbfc 100644 --- a/libs/utils/include/celix_log_utils.h +++ b/libs/utils/include/celix_log_utils.h @@ -32,23 +32,23 @@ extern "C" { #endif /** - * Convert a celix log level enum to a const char* value. + * @brief Convert a celix log level enum to a const char* value. + * @deprecated Use celix_logLevel_toString instead. */ -CELIX_UTILS_EXPORT const char* celix_logUtils_logLevelToString(celix_log_level_e level); +CELIX_UTILS_DEPRECATED_EXPORT const char* celix_logUtils_logLevelToString(celix_log_level_e level); /** - * Convert a const char* value to a celix log level - * If the provided log level cannot be parsed or is NULL, the fallbackLogLevel is returned. + * @brief Convert a const char* value to a celix log level. + * @deprecated Use celix_logLevel_fromString instead. */ -CELIX_UTILS_EXPORT celix_log_level_e celix_logUtils_logLevelFromString(const char *level, celix_log_level_e fallbackLogLevel); +CELIX_UTILS_DEPRECATED_EXPORT celix_log_level_e celix_logUtils_logLevelFromString(const char* level, + celix_log_level_e fallbackLogLevel); /** - * Convert a const char* value to a celix log level - * If the provided log level cannot be parsed or is NULL, the fallbackLogLevel is returned and - * if a convertedSuccessfully pointer is provided this will be set to false. - * If converted successfully and the convertedSuccessfully pointer is provided. This will be set to true. + * @brief Convert a const char* value to a celix log level. + * @deprecated Use celix_logLevel_fromStringWithCheck instead. */ -CELIX_UTILS_EXPORT celix_log_level_e celix_logUtils_logLevelFromStringWithCheck( +CELIX_UTILS_DEPRECATED_EXPORT celix_log_level_e celix_logUtils_logLevelFromStringWithCheck( const char *level, celix_log_level_e fallbackLogLevel, bool *convertedSuccessfully); diff --git a/libs/utils/src/celix_log_level.c b/libs/utils/src/celix_log_level.c new file mode 100644 index 00000000..7c85d2a7 --- /dev/null +++ b/libs/utils/src/celix_log_level.c @@ -0,0 +1,97 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you under the Apache License, Version 2.0 (the + *"License"); you may not use this file except in compliance + *with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + *Unless required by applicable law or agreed to in writing, + *software distributed under the License is distributed on an + *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + *specific language governing permissions and limitations + *under the License. + */ + +#include "celix_log_utils.h" +#include <strings.h> + +static const char* const CELIX_STRING_VALUE_DISABLED = "disabled"; +static const char* const CELIX_STRING_VALUE_FATAL = "fatal"; +static const char* const CELIX_STRING_VALUE_ERROR = "error"; +static const char* const CELIX_STRING_VALUE_WARNING = "warning"; +static const char* const CELIX_STRING_VALUE_INFO = "info"; +static const char* const CELIX_STRING_VALUE_DEBUG = "debug"; +static const char* const CELIX_STRING_VALUE_TRACE = "trace"; + +const char* celix_logLevel_toString(celix_log_level_e level) { + switch (level) { + case CELIX_LOG_LEVEL_DISABLED: + return CELIX_STRING_VALUE_DISABLED; + case CELIX_LOG_LEVEL_FATAL: + return CELIX_STRING_VALUE_FATAL; + case CELIX_LOG_LEVEL_ERROR: + return CELIX_STRING_VALUE_ERROR; + case CELIX_LOG_LEVEL_WARNING: + return CELIX_STRING_VALUE_WARNING; + case CELIX_LOG_LEVEL_INFO: + return CELIX_STRING_VALUE_INFO; + case CELIX_LOG_LEVEL_DEBUG: + return CELIX_STRING_VALUE_DEBUG; + default: // only trace left + return CELIX_STRING_VALUE_TRACE; + } +} + +celix_log_level_e celix_logLevel_fromString(const char* str, celix_log_level_e fallbackLogLevel) { + return celix_logLevel_fromStringWithCheck(str, fallbackLogLevel, NULL); +} + +celix_log_level_e +celix_logLevel_fromStringWithCheck(const char* str, celix_log_level_e fallbackLogLevel, bool* convertedSuccessfully) { + celix_log_level_e level = fallbackLogLevel; + if (convertedSuccessfully != NULL) { + *convertedSuccessfully = true; + } + if (str != NULL) { + if (strncasecmp(CELIX_STRING_VALUE_DISABLED, str, strlen(CELIX_STRING_VALUE_DISABLED)) == 0) { + level = CELIX_LOG_LEVEL_DISABLED; + } else if (strncasecmp(CELIX_STRING_VALUE_FATAL, str, strlen(CELIX_STRING_VALUE_FATAL)) == 0) { + level = CELIX_LOG_LEVEL_FATAL; + } else if (strncasecmp(CELIX_STRING_VALUE_ERROR, str, strlen(CELIX_STRING_VALUE_ERROR)) == 0) { + level = CELIX_LOG_LEVEL_ERROR; + } else if (strncasecmp(CELIX_STRING_VALUE_WARNING, str, strlen(CELIX_STRING_VALUE_WARNING)) == 0) { + level = CELIX_LOG_LEVEL_WARNING; + } else if (strncasecmp(CELIX_STRING_VALUE_INFO, str, strlen(CELIX_STRING_VALUE_INFO)) == 0) { + level = CELIX_LOG_LEVEL_INFO; + } else if (strncasecmp(CELIX_STRING_VALUE_DEBUG, str, strlen(CELIX_STRING_VALUE_DEBUG)) == 0) { + level = CELIX_LOG_LEVEL_DEBUG; + } else if (strncasecmp(CELIX_STRING_VALUE_TRACE, str, strlen(CELIX_STRING_VALUE_TRACE)) == 0) { + level = CELIX_LOG_LEVEL_TRACE; + } else { + celix_logUtils_logToStdout( + "logUtils", + CELIX_LOG_LEVEL_ERROR, + "Cannot match log level str '%s' to an existing log level. Falling back to log level %s", + str, + celix_logUtils_logLevelToString(fallbackLogLevel)); + if (convertedSuccessfully != NULL) { + *convertedSuccessfully = false; + } + } + } else { + celix_logUtils_logToStdout( + "logUtils", + CELIX_LOG_LEVEL_ERROR, + "Cannot match NULL log level str to an existing log level. Falling back to log level %s", + celix_logUtils_logLevelToString(fallbackLogLevel)); + if (convertedSuccessfully != NULL) { + *convertedSuccessfully = false; + } + } + return level; +} diff --git a/libs/utils/src/celix_log_utils.c b/libs/utils/src/celix_log_utils.c index 01349d61..62a1be63 100644 --- a/libs/utils/src/celix_log_utils.c +++ b/libs/utils/src/celix_log_utils.c @@ -30,70 +30,16 @@ #include <string.h> #include <pthread.h> -static const char * const CELIX_STRING_VALUE_DISABLED = "disabled"; -static const char * const CELIX_STRING_VALUE_FATAL = "fatal"; -static const char * const CELIX_STRING_VALUE_ERROR = "error"; -static const char * const CELIX_STRING_VALUE_WARNING = "warning"; -static const char * const CELIX_STRING_VALUE_INFO = "info"; -static const char * const CELIX_STRING_VALUE_DEBUG = "debug"; -static const char * const CELIX_STRING_VALUE_TRACE = "trace"; - -const char* celix_logUtils_logLevelToString(celix_log_level_e level) { - switch(level) { - case CELIX_LOG_LEVEL_DISABLED: - return CELIX_STRING_VALUE_DISABLED; - case CELIX_LOG_LEVEL_FATAL: - return CELIX_STRING_VALUE_FATAL; - case CELIX_LOG_LEVEL_ERROR: - return CELIX_STRING_VALUE_ERROR; - case CELIX_LOG_LEVEL_WARNING: - return CELIX_STRING_VALUE_WARNING; - case CELIX_LOG_LEVEL_INFO: - return CELIX_STRING_VALUE_INFO; - case CELIX_LOG_LEVEL_DEBUG: - return CELIX_STRING_VALUE_DEBUG; - default: //only trace left - return CELIX_STRING_VALUE_TRACE; - } -} +const char* celix_logUtils_logLevelToString(celix_log_level_e level) { return celix_logLevel_toString(level); } -celix_log_level_e celix_logUtils_logLevelFromString(const char *str, celix_log_level_e fallbackLogLevel) { - return celix_logUtils_logLevelFromStringWithCheck(str, fallbackLogLevel, NULL); +celix_log_level_e celix_logUtils_logLevelFromString(const char* str, celix_log_level_e fallbackLogLevel) { + return celix_logLevel_fromString(str, fallbackLogLevel); } -celix_log_level_e celix_logUtils_logLevelFromStringWithCheck(const char *str, celix_log_level_e fallbackLogLevel, bool *convertedSuccessfully) { - celix_log_level_e level = fallbackLogLevel; - if (convertedSuccessfully != NULL) { - *convertedSuccessfully = true; - } - if (str != NULL) { - if (strncasecmp(CELIX_STRING_VALUE_DISABLED, str, strlen(CELIX_STRING_VALUE_DISABLED)) == 0) { - level = CELIX_LOG_LEVEL_DISABLED; - } else if (strncasecmp(CELIX_STRING_VALUE_FATAL, str, strlen(CELIX_STRING_VALUE_FATAL)) == 0) { - level = CELIX_LOG_LEVEL_FATAL; - } else if (strncasecmp(CELIX_STRING_VALUE_ERROR, str, strlen(CELIX_STRING_VALUE_ERROR)) == 0) { - level = CELIX_LOG_LEVEL_ERROR; - } else if (strncasecmp(CELIX_STRING_VALUE_WARNING, str, strlen(CELIX_STRING_VALUE_WARNING)) == 0) { - level = CELIX_LOG_LEVEL_WARNING; - } else if (strncasecmp(CELIX_STRING_VALUE_INFO, str, strlen(CELIX_STRING_VALUE_INFO)) == 0) { - level = CELIX_LOG_LEVEL_INFO; - } else if (strncasecmp(CELIX_STRING_VALUE_DEBUG, str, strlen(CELIX_STRING_VALUE_DEBUG)) == 0) { - level = CELIX_LOG_LEVEL_DEBUG; - } else if (strncasecmp(CELIX_STRING_VALUE_TRACE, str, strlen(CELIX_STRING_VALUE_TRACE)) == 0) { - level = CELIX_LOG_LEVEL_TRACE; - } else { - celix_logUtils_logToStdout("logUtils", CELIX_LOG_LEVEL_ERROR, "Cannot match log level str '%s' to an existing log level. Falling back to log level %s", str, celix_logUtils_logLevelToString(fallbackLogLevel)); - if (convertedSuccessfully != NULL) { - *convertedSuccessfully = false; - } - } - } else { - celix_logUtils_logToStdout("logUtils", CELIX_LOG_LEVEL_ERROR, "Cannot match NULL log level str to an existing log level. Falling back to log level %s", celix_logUtils_logLevelToString(fallbackLogLevel)); - if (convertedSuccessfully != NULL) { - *convertedSuccessfully = false; - } - } - return level; +celix_log_level_e celix_logUtils_logLevelFromStringWithCheck(const char* str, + celix_log_level_e fallbackLogLevel, + bool* convertedSuccessfully) { + return celix_logLevel_fromStringWithCheck(str, fallbackLogLevel, convertedSuccessfully); } #ifndef __UCLIBC__
