|
|
|
@ -213,48 +213,56 @@ int SrsApiConfigsLogs::do_process_request(SrsSocket* skt, SrsHttpMessage* req)
|
|
|
|
|
{
|
|
|
|
|
int ret = ERROR_SUCCESS;
|
|
|
|
|
|
|
|
|
|
if (req->is_http_put()) {
|
|
|
|
|
srs_trace("http api PUT logs, req is: %s", req->body().c_str());
|
|
|
|
|
|
|
|
|
|
SrsJsonAny* json = SrsJsonAny::loads(req->body_raw());
|
|
|
|
|
SrsAutoFree(SrsJsonAny, json);
|
|
|
|
|
// HTTP GET
|
|
|
|
|
if (req->is_http_get()) {
|
|
|
|
|
std::stringstream ss;
|
|
|
|
|
ss << JOBJECT_START
|
|
|
|
|
<< JFIELD_ERROR(ERROR_SUCCESS) << JFIELD_CONT
|
|
|
|
|
<< JFIELD_ORG("data", JOBJECT_START)
|
|
|
|
|
<< JFIELD_STR("tank", (_srs_config->get_log_tank_file()? "file":"console")) << JFIELD_CONT
|
|
|
|
|
<< JFIELD_STR("level", _srs_config->get_log_level()) << JFIELD_CONT
|
|
|
|
|
<< JFIELD_STR("cwd", _srs_config->cwd()) << JFIELD_CONT
|
|
|
|
|
<< JFIELD_STR("file", _srs_config->get_log_file())
|
|
|
|
|
<< JOBJECT_END
|
|
|
|
|
<< JOBJECT_END;
|
|
|
|
|
|
|
|
|
|
if (json->is_object()) {
|
|
|
|
|
SrsJsonObject* o = json->to_object();
|
|
|
|
|
SrsJsonAny* prop = NULL;
|
|
|
|
|
if ((prop = o->ensure_property_string("file")) != NULL && _srs_config->set_log_file(prop->to_str())) {
|
|
|
|
|
if ((ret = _srs_config->force_reload_log_file()) != ERROR_SUCCESS) {
|
|
|
|
|
return response_error(skt, req, ret, "reload log file failed");
|
|
|
|
|
}
|
|
|
|
|
srs_warn("http api reload log file to %s", prop->to_str().c_str());
|
|
|
|
|
}
|
|
|
|
|
if ((prop = o->ensure_property_string("tank")) != NULL && _srs_config->set_log_tank(prop->to_str())) {
|
|
|
|
|
if ((ret = _srs_config->force_reload_log_tank()) != ERROR_SUCCESS) {
|
|
|
|
|
return response_error(skt, req, ret, "reload log tank failed");
|
|
|
|
|
}
|
|
|
|
|
srs_warn("http api reload log tank to %s", prop->to_str().c_str());
|
|
|
|
|
}
|
|
|
|
|
if ((prop = o->ensure_property_string("level")) != NULL && _srs_config->set_log_level(prop->to_str())) {
|
|
|
|
|
if ((ret = _srs_config->force_reload_log_level()) != ERROR_SUCCESS) {
|
|
|
|
|
return response_error(skt, req, ret, "reload log level failed");
|
|
|
|
|
}
|
|
|
|
|
srs_warn("http api reload log level to %s", prop->to_str().c_str());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return res_json(skt, req, ss.str());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
std::stringstream ss;
|
|
|
|
|
ss << JOBJECT_START
|
|
|
|
|
<< JFIELD_ERROR(ERROR_SUCCESS) << JFIELD_CONT
|
|
|
|
|
<< JFIELD_ORG("data", JOBJECT_START)
|
|
|
|
|
<< JFIELD_STR("tank", (_srs_config->get_log_tank_file()? "file":"console")) << JFIELD_CONT
|
|
|
|
|
<< JFIELD_STR("level", _srs_config->get_log_level()) << JFIELD_CONT
|
|
|
|
|
<< JFIELD_STR("cwd", _srs_config->cwd()) << JFIELD_CONT
|
|
|
|
|
<< JFIELD_STR("file", _srs_config->get_log_file())
|
|
|
|
|
<< JOBJECT_END
|
|
|
|
|
<< JOBJECT_END;
|
|
|
|
|
// HTTP PUT
|
|
|
|
|
srs_trace("http api PUT logs, req is: %s", req->body().c_str());
|
|
|
|
|
|
|
|
|
|
return res_json(skt, req, ss.str());
|
|
|
|
|
SrsJsonAny* json = SrsJsonAny::loads(req->body_raw());
|
|
|
|
|
SrsAutoFree(SrsJsonAny, json);
|
|
|
|
|
|
|
|
|
|
if (!json) {
|
|
|
|
|
return response_error(skt, req, ERROR_HTTP_API_LOGS, "invalid PUT json");
|
|
|
|
|
} else if (!json->is_object()) {
|
|
|
|
|
return response_error(skt, req, ERROR_HTTP_API_LOGS, "invalid PUT json logs params");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SrsJsonObject* o = json->to_object();
|
|
|
|
|
SrsJsonAny* prop = NULL;
|
|
|
|
|
if ((prop = o->ensure_property_string("file")) != NULL && _srs_config->set_log_file(prop->to_str())) {
|
|
|
|
|
if ((ret = _srs_config->force_reload_log_file()) != ERROR_SUCCESS) {
|
|
|
|
|
return response_error(skt, req, ret, "reload log file failed");
|
|
|
|
|
}
|
|
|
|
|
srs_warn("http api reload log file to %s", prop->to_str().c_str());
|
|
|
|
|
}
|
|
|
|
|
if ((prop = o->ensure_property_string("tank")) != NULL && _srs_config->set_log_tank(prop->to_str())) {
|
|
|
|
|
if ((ret = _srs_config->force_reload_log_tank()) != ERROR_SUCCESS) {
|
|
|
|
|
return response_error(skt, req, ret, "reload log tank failed");
|
|
|
|
|
}
|
|
|
|
|
srs_warn("http api reload log tank to %s", prop->to_str().c_str());
|
|
|
|
|
}
|
|
|
|
|
if ((prop = o->ensure_property_string("level")) != NULL && _srs_config->set_log_level(prop->to_str())) {
|
|
|
|
|
if ((ret = _srs_config->force_reload_log_level()) != ERROR_SUCCESS) {
|
|
|
|
|
return response_error(skt, req, ret, "reload log level failed");
|
|
|
|
|
}
|
|
|
|
|
srs_warn("http api reload log level to %s", prop->to_str().c_str());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return response_error(skt, req, ret, "PUT logs success.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SrsApiVersion::SrsApiVersion()
|
|
|
|
|