diff --git a/test/nodetool/test_logging.py b/test/nodetool/test_logging.py index 1495b24b97..f81db5fe5a 100644 --- a/test/nodetool/test_logging.py +++ b/test/nodetool/test_logging.py @@ -5,6 +5,7 @@ # from rest_api_mock import expected_request +import utils def test_getlogginglevels(nodetool): @@ -18,3 +19,24 @@ Logger Name Log Level sstable info cache trace """ + + +def test_setlogginglevel(nodetool): + nodetool("setlogginglevel", "wasm", "trace", expected_requests=[ + expected_request("POST", "/system/logger/wasm", params={"level": "trace"})]) + + +def test_setlogginglevel_reset_logger(nodetool, scylla_only): + utils.check_nodetool_fails_with( + nodetool, + ("setlogginglevel", "wasm"), + {"expected_requests": []}, + ["error processing arguments: resetting logger(s) is not supported yet, the logger and level parameters are required"]) + + +def test_setlogginglevel_reset_all_loggers(nodetool, scylla_only): + utils.check_nodetool_fails_with( + nodetool, + ("setlogginglevel",), + {"expected_requests": []}, + ["error processing arguments: resetting logger(s) is not supported yet, the logger and level parameters are required"]) diff --git a/tools/scylla-nodetool.cc b/tools/scylla-nodetool.cc index 2ea2a3423f..eb346cca47 100644 --- a/tools/scylla-nodetool.cc +++ b/tools/scylla-nodetool.cc @@ -585,6 +585,13 @@ void removenode_operation(scylla_rest_client& client, const bpo::variables_map& } } +void setlogginglevel_operation(scylla_rest_client& client, const bpo::variables_map& vm) { + if (!vm.count("logger") || !vm.count("level")) { + throw std::invalid_argument("resetting logger(s) is not supported yet, the logger and level parameters are required"); + } + client.post(format("/system/logger/{}", vm["logger"].as()), {{"level", vm["level"].as()}}); +} + void settraceprobability_operation(scylla_rest_client& client, const bpo::variables_map& vm) { if (!vm.count("trace_probability")) { throw std::invalid_argument("required parameters are missing: trace_probability"); @@ -1052,6 +1059,23 @@ Fore more information, see: https://opensource.docs.scylladb.com/stable/operatin }, removenode_operation }, + { + { + "setlogginglevel", + "Sets the level log threshold for a given logger during runtime", +R"( +Resetting the log level of one or all loggers is not supported yet. + +Fore more information, see: https://opensource.docs.scylladb.com/stable/operating-scylla/nodetool-commands/setlogginglevel.html +)", + { }, + { + typed_option("logger", "The logger to set the log level for, if unspecified, all loggers are reset to the default level", 1), + typed_option("level", "The log level to set, one of (trace, debug, info, warn and error), if unspecified, default level is reset to default log level", 1), + }, + }, + setlogginglevel_operation + }, { { "settraceprobability",