MXS-1220: Implement /maxscale/logs resource
The /maxscale/logs resource exposes information about the state of logging in MaxScale.
This commit is contained in:
@ -13,11 +13,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <maxscale/cdefs.h>
|
#include <maxscale/cdefs.h>
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include <maxscale/jansson.h>
|
||||||
|
|
||||||
MXS_BEGIN_DECLS
|
MXS_BEGIN_DECLS
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -105,6 +108,7 @@ void mxs_log_set_augmentation(int bits);
|
|||||||
void mxs_log_set_throttling(const MXS_LOG_THROTTLING* throttling);
|
void mxs_log_set_throttling(const MXS_LOG_THROTTLING* throttling);
|
||||||
|
|
||||||
void mxs_log_get_throttling(MXS_LOG_THROTTLING* throttling);
|
void mxs_log_get_throttling(MXS_LOG_THROTTLING* throttling);
|
||||||
|
json_t* mxs_logs_to_json(const char* host);
|
||||||
|
|
||||||
static inline bool mxs_log_priority_is_enabled(int priority)
|
static inline bool mxs_log_priority_is_enabled(int priority)
|
||||||
{
|
{
|
||||||
|
@ -11,10 +11,10 @@
|
|||||||
* Public License.
|
* Public License.
|
||||||
*/
|
*/
|
||||||
#include <maxscale/log_manager.h>
|
#include <maxscale/log_manager.h>
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
@ -23,14 +23,17 @@
|
|||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
#include <maxscale/atomic.h>
|
|
||||||
#include <maxscale/platform.h>
|
|
||||||
|
|
||||||
|
#include <maxscale/atomic.h>
|
||||||
|
#include <maxscale/config.h>
|
||||||
|
#include <maxscale/platform.h>
|
||||||
#include <maxscale/hashtable.h>
|
#include <maxscale/hashtable.h>
|
||||||
|
#include <maxscale/json_api.h>
|
||||||
#include <maxscale/spinlock.h>
|
#include <maxscale/spinlock.h>
|
||||||
#include <maxscale/debug.h>
|
#include <maxscale/debug.h>
|
||||||
#include <maxscale/alloc.h>
|
#include <maxscale/alloc.h>
|
||||||
#include <maxscale/utils.h>
|
#include <maxscale/utils.h>
|
||||||
|
|
||||||
#include "maxscale/mlist.h"
|
#include "maxscale/mlist.h"
|
||||||
|
|
||||||
#define MAX_PREFIXLEN 250
|
#define MAX_PREFIXLEN 250
|
||||||
@ -3013,3 +3016,25 @@ const char* mxs_strerror(int error)
|
|||||||
|
|
||||||
return strerror_r(error, errbuf, sizeof(errbuf));
|
return strerror_r(error, errbuf, sizeof(errbuf));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
json_t* mxs_logs_to_json(const char* host)
|
||||||
|
{
|
||||||
|
json_t* attr = json_object();
|
||||||
|
json_object_set_new(attr, "highprecision", json_boolean(log_config.do_highprecision));
|
||||||
|
json_object_set_new(attr, "maxlog", json_boolean(log_config.do_maxlog));
|
||||||
|
json_object_set_new(attr, "syslog", json_boolean(log_config.do_syslog));
|
||||||
|
|
||||||
|
json_t* throttling = json_object();
|
||||||
|
json_object_set_new(throttling, "count", json_integer(log_config.throttling.count));
|
||||||
|
json_object_set_new(throttling, "suppress_ms", json_integer(log_config.throttling.suppress_ms));
|
||||||
|
json_object_set_new(throttling, "window_ms", json_integer(log_config.throttling.window_ms));
|
||||||
|
|
||||||
|
json_object_set_new(attr, "throttling", throttling);
|
||||||
|
|
||||||
|
json_t* data = json_object();
|
||||||
|
json_object_set_new(data, CN_ATTRIBUTES, attr);
|
||||||
|
json_object_set_new(data, CN_ID, json_string("logs"));
|
||||||
|
json_object_set_new(data, CN_TYPE, json_string("logs"));
|
||||||
|
|
||||||
|
return mxs_json_resource(host, MXS_JSON_API_LOGS, data);
|
||||||
|
}
|
||||||
|
@ -359,8 +359,7 @@ HttpResponse cb_maxscale(const HttpRequest& request)
|
|||||||
|
|
||||||
HttpResponse cb_logs(const HttpRequest& request)
|
HttpResponse cb_logs(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
// TODO: Show logs
|
return HttpResponse(MHD_HTTP_OK, mxs_logs_to_json(request.host()));
|
||||||
return HttpResponse(MHD_HTTP_OK, mxs_json_resource(request.host(), MXS_JSON_API_LOGS, json_null()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_flush(const HttpRequest& request)
|
HttpResponse cb_flush(const HttpRequest& request)
|
||||||
|
Reference in New Issue
Block a user