Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions include/rcutils/logging.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ extern "C"
#define RCUTILS_LOGGING_SEPARATOR_CHAR '.'
#define RCUTILS_LOGGING_SEPARATOR_STRING "."

/**
* \def RCUTILS_DEFAULT_LOGGER_DEFAULT_LEVEL
* \brief The default severity level of the default logger.
*/
#define RCUTILS_DEFAULT_LOGGER_DEFAULT_LEVEL RCUTILS_LOG_SEVERITY_INFO

/// The flag if the logging system has been initialized.
RCUTILS_PUBLIC
extern bool g_rcutils_logging_initialized;
Expand Down Expand Up @@ -237,6 +243,10 @@ int rcutils_logging_get_default_logger_level();

/// Set the default severity level for loggers.
/**
* If the severity level requested is `RCUTILS_LOG_SEVERITY_UNSET`, the default
* value for the default logger (`RCUTILS_DEFAULT_LOGGER_DEFAULT_LEVEL`)
* will be restored instead.
*
* <hr>
* Attribute | Adherence
* ------------------ | -------------
Expand Down
6 changes: 5 additions & 1 deletion src/logging.c
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ rcutils_ret_t rcutils_logging_initialize_with_allocator(rcutils_allocator_t allo
g_rcutils_logging_allocator = allocator;

g_rcutils_logging_output_handler = &rcutils_logging_console_output_handler;
g_rcutils_logging_default_logger_level = RCUTILS_LOG_SEVERITY_INFO;
g_rcutils_logging_default_logger_level = RCUTILS_DEFAULT_LOGGER_DEFAULT_LEVEL;

// Check for the environment variable for custom output formatting
const char * output_format;
Expand Down Expand Up @@ -184,6 +184,10 @@ void rcutils_logging_set_default_logger_level(int level)
{
// *INDENT-OFF* (prevent uncrustify from making unnecessary indents here)
RCUTILS_LOGGING_AUTOINIT
if (RCUTILS_LOG_SEVERITY_UNSET == level) {
// Restore the default
level = RCUTILS_DEFAULT_LOGGER_DEFAULT_LEVEL;
}
g_rcutils_logging_default_logger_level = level;
// *INDENT-ON*
}
Expand Down
10 changes: 7 additions & 3 deletions test/test_logging.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,14 @@ TEST(CLASSNAME(TestLogging, RMW_IMPLEMENTATION), test_logging) {

// check default level
int original_level = rcutils_logging_get_default_logger_level();
rcutils_logging_set_default_logger_level(RCUTILS_LOG_SEVERITY_INFO);
EXPECT_EQ(RCUTILS_LOG_SEVERITY_INFO, rcutils_logging_get_default_logger_level());
rcutils_log(NULL, RCUTILS_LOG_SEVERITY_DEBUG, "name2", "message %d", 22);
rcutils_logging_set_default_logger_level(RCUTILS_LOG_SEVERITY_ERROR);
EXPECT_EQ(RCUTILS_LOG_SEVERITY_ERROR, rcutils_logging_get_default_logger_level());
rcutils_log(NULL, RCUTILS_LOG_SEVERITY_INFO, "name2", "message %d", 22);
EXPECT_EQ(1u, g_log_calls);
// It shouldn't be possible to set the default logger's level to UNSET.
// Setting unset to the default logger should result in the default being restored.
rcutils_logging_set_default_logger_level(RCUTILS_LOG_SEVERITY_UNSET);
EXPECT_EQ(RCUTILS_DEFAULT_LOGGER_DEFAULT_LEVEL, rcutils_logging_get_default_logger_level());

// check other severity levels
rcutils_log(NULL, RCUTILS_LOG_SEVERITY_INFO, "name3", "message %d", 33);
Expand Down