diff --git a/src/cpp/ripple/CallRPC.cpp b/src/cpp/ripple/CallRPC.cpp index e47ad21ba3..cd481b53b7 100644 --- a/src/cpp/ripple/CallRPC.cpp +++ b/src/cpp/ripple/CallRPC.cpp @@ -210,6 +210,24 @@ Json::Value RPCParser::parseLogin(const Json::Value& jvParams) return jvRequest; } +// log_level: Get log levels +// log_level : Set master log level to the specified severity +// log_level : Set specified partition to specified severity +Json::Value RPCParser::parseLogLevel(const Json::Value& jvParams) +{ + Json::Value jvRequest(Json::objectValue); + + if (jvParams.size() == 1) + jvRequest["severity"] = jvParams[0u].asString(); + else if (jvParams.size() == 2) + { + jvRequest["partition"] = jvParams[0u].asString(); + jvRequest["severity"] = jvParams[1u].asString(); + } + + return jvRequest; +} + // owner_info || // owner_info || [] Json::Value RPCParser::parseOwnerInfo(const Json::Value& jvParams) @@ -405,7 +423,7 @@ Json::Value RPCParser::parseCommand(std::string strMethod, Json::Value jvParams) { "ledger_current", &RPCParser::parseAsIs, 0, 0 }, // { "ledger_entry", &RPCParser::parseLedgerEntry, -1, -1 }, // { "ledger_header", &RPCParser::parseLedgerHeader, -1, -1 }, -// { "log_level", &RPCParser::parseLogLevel, 0, 2 }, + { "log_level", &RPCParser::parseLogLevel, 0, 2 }, { "logrotate", &RPCParser::parseAsIs, 0, 0 }, // { "nickname_info", &RPCParser::parseNicknameInfo, 1, 1 }, { "owner_info", &RPCParser::parseOwnerInfo, 1, 2 }, diff --git a/src/cpp/ripple/CallRPC.h b/src/cpp/ripple/CallRPC.h index cd01faafc1..e03572caf1 100644 --- a/src/cpp/ripple/CallRPC.h +++ b/src/cpp/ripple/CallRPC.h @@ -23,6 +23,7 @@ protected: Json::Value parseGetCounts(const Json::Value& jvParams); Json::Value parseLedger(const Json::Value& jvParams); Json::Value parseLogin(const Json::Value& jvParams); + Json::Value parseLogLevel(const Json::Value& jvParams); Json::Value parseOwnerInfo(const Json::Value& jvParams); Json::Value parseRandom(const Json::Value& jvParams); Json::Value parseSubmit(const Json::Value& jvParams); diff --git a/src/cpp/ripple/RPCHandler.cpp b/src/cpp/ripple/RPCHandler.cpp index 23579ea010..48da913868 100644 --- a/src/cpp/ripple/RPCHandler.cpp +++ b/src/cpp/ripple/RPCHandler.cpp @@ -1570,10 +1570,10 @@ Json::Value RPCHandler::doGetCounts(Json::Value jvRequest) return ret; } -Json::Value RPCHandler::doLogLevel(Json::Value params) +Json::Value RPCHandler::doLogLevel(Json::Value jvRequest) { // log_level - if (params.size() == 0) + if (!jvRequest.isMember("severity")) { // get log severities Json::Value ret = Json::objectValue; @@ -1587,35 +1587,29 @@ Json::Value RPCHandler::doLogLevel(Json::Value params) return ret; } + LogSeverity sv = Log::stringToSeverity(jvRequest["severity"].asString()); + if (sv == lsINVALID) + return rpcError(rpcINVALID_PARAMS); + // log_level severity - if (params.size() == 1) + if (!jvRequest.isMember("partition")) { // set base log severity - LogSeverity sv = Log::stringToSeverity(params[0u].asString()); - if (sv == lsINVALID) - return rpcError(rpcINVALID_PARAMS); - - Log::setMinSeverity(sv,true); - + Log::setMinSeverity(sv, true); return rpcError(rpcSUCCESS); } // log_level partition severity base? - if (params.size() == 2) + if (jvRequest.isMember("partition")) { // set partition severity - LogSeverity sv = Log::stringToSeverity(params[1u].asString()); - - if (sv == lsINVALID) - return rpcError(rpcINVALID_PARAMS); - - if (params[2u].asString() == "base") + std::string partition(jvRequest["partition"].asString()); + if (boost::iequals(partition, "base")) Log::setMinSeverity(sv,false); - else if (!LogPartition::setSeverity(params[0u].asString(), sv)) + else if (!LogPartition::setSeverity(partition, sv)) return rpcError(rpcINVALID_PARAMS); return rpcError(rpcSUCCESS); } - assert(false); return rpcError(rpcINVALID_PARAMS); }