MXS-2592 Add configuration for session specific in-memory log

When enabled each session will write log messages in the in-memory log.
If session ends in error this log is written to the actual log in disk.
This commit is contained in:
Marko
2019-07-24 18:29:58 +03:00
parent b07ffdb2fa
commit 918a2964d5
14 changed files with 176 additions and 16 deletions

View File

@ -160,6 +160,7 @@ const char CN_SERVER[] = "server";
const char CN_SERVICES[] = "services";
const char CN_SERVICE[] = "service";
const char CN_SESSIONS[] = "sessions";
const char CN_SESSION_TRACE[] = "session_trace";
const char CN_SESSION_TRACK_TRX_STATE[] = "session_track_trx_state";
const char CN_SKIP_PERMISSION_CHECKS[] = "skip_permission_checks";
const char CN_SOCKET[] = "socket";
@ -317,6 +318,7 @@ const MXS_MODULE_PARAM config_service_params[] =
{CN_RETRY_ON_FAILURE, MXS_MODULE_PARAM_BOOL, "true"},
{CN_SESSION_TRACK_TRX_STATE, MXS_MODULE_PARAM_BOOL, "false"},
{CN_RETAIN_LAST_STATEMENTS, MXS_MODULE_PARAM_INT, "-1"},
{CN_SESSION_TRACE, MXS_MODULE_PARAM_INT, "0"},
{NULL}
};
@ -2602,6 +2604,21 @@ static int handle_global_item(const char* name, const char* value)
return 0;
}
}
else if (strcmp(name, CN_SESSION_TRACE) == 0)
{
char* endptr;
int intval = strtol(value, &endptr, 0);
if (*endptr == '\0' && intval >= 0)
{
session_set_session_trace(intval);
mxb_log_set_session_trace(true);
}
else
{
MXS_ERROR("Invalid value for '%s': %s", CN_SESSION_TRACE, value);
return 0;
}
}
else if (strcmp(name, CN_LOAD_PERSISTED_CONFIGS) == 0)
{
int b = config_truth_value(value);