@@ -160,6 +160,50 @@ TEST(TestLogger, set_level) {
160160 EXPECT_EQ (RCUTILS_RET_OK, rcutils_logging_shutdown ());
161161}
162162
163+ TEST (TestLogger, get_effective_level) {
164+ ASSERT_EQ (RCUTILS_RET_OK, rcutils_logging_initialize ());
165+
166+ rclcpp::Logger logger = rclcpp::get_logger (" test_logger" );
167+ rclcpp::Logger child_logger = rclcpp::get_logger (" test_logger.child" );
168+
169+ // set child logger level unset to test effective level
170+ child_logger.set_level (rclcpp::Logger::Level::Unset);
171+
172+ // default
173+ EXPECT_EQ (rclcpp::Logger::Level::Info, logger.get_effective_level ());
174+ EXPECT_EQ (rclcpp::Logger::Level::Info, child_logger.get_effective_level ());
175+
176+ // unset
177+ logger.set_level (rclcpp::Logger::Level::Unset);
178+ EXPECT_EQ (rclcpp::Logger::Level::Info, logger.get_effective_level ());
179+ EXPECT_EQ (rclcpp::Logger::Level::Info, child_logger.get_effective_level ());
180+
181+ // debug
182+ logger.set_level (rclcpp::Logger::Level::Debug);
183+ EXPECT_EQ (rclcpp::Logger::Level::Debug, logger.get_effective_level ());
184+ EXPECT_EQ (rclcpp::Logger::Level::Debug, child_logger.get_effective_level ());
185+
186+ // info
187+ logger.set_level (rclcpp::Logger::Level::Info);
188+ EXPECT_EQ (rclcpp::Logger::Level::Info, logger.get_effective_level ());
189+ EXPECT_EQ (rclcpp::Logger::Level::Info, child_logger.get_effective_level ());
190+
191+ // warn
192+ logger.set_level (rclcpp::Logger::Level::Warn);
193+ EXPECT_EQ (rclcpp::Logger::Level::Warn, logger.get_effective_level ());
194+ EXPECT_EQ (rclcpp::Logger::Level::Warn, child_logger.get_effective_level ());
195+
196+ // error
197+ logger.set_level (rclcpp::Logger::Level::Error);
198+ EXPECT_EQ (rclcpp::Logger::Level::Error, logger.get_effective_level ());
199+ EXPECT_EQ (rclcpp::Logger::Level::Error, child_logger.get_effective_level ());
200+
201+ // fatal
202+ logger.set_level (rclcpp::Logger::Level::Fatal);
203+ EXPECT_EQ (rclcpp::Logger::Level::Fatal, logger.get_effective_level ());
204+ EXPECT_EQ (rclcpp::Logger::Level::Fatal, child_logger.get_effective_level ());
205+ }
206+
163207TEST (TestLogger, get_logging_directory) {
164208 ASSERT_EQ (true , rcutils_set_env (" HOME" , " /fake_home_dir" ));
165209 ASSERT_EQ (true , rcutils_set_env (" USERPROFILE" , nullptr ));
0 commit comments