Log: Cleanup of API

skygw_ functions removed and replaced with mxs_ equivalents.
logfile_id_t removed.
This commit is contained in:
Johan Wikman
2015-11-12 13:15:29 +02:00
parent 05fbdb1b76
commit 2c1b53c120
6 changed files with 78 additions and 108 deletions

View File

@ -65,18 +65,26 @@ static int block_start_index;
static int prevval; static int prevval;
static simple_mutex_t msg_mutex; static simple_mutex_t msg_mutex;
#endif #endif
/**
* Default augmentation.
*/
static int DEFAULT_LOG_AUGMENTATION = 0;
static struct static struct
{ {
int highprec; // Can change during the lifetime of log_manager. int augmentation; // Can change during the lifetime of log_manager.
int do_syslog; // Can change during the lifetime of log_manager. bool do_highprecision; // Can change during the lifetime of log_manager.
int do_maxscalelog; // Can change during the lifetime of log_manager. bool do_syslog; // Can change during the lifetime of log_manager.
int use_stdout; // Can NOT changed during the lifetime of log_manager. bool do_maxscalelog; // Can change during the lifetime of log_manager.
bool use_stdout; // Can NOT changed during the lifetime of log_manager.
} log_config = } log_config =
{ {
0, // highprec DEFAULT_LOG_AUGMENTATION, // augmentation
1, // do_syslog false, // do_highprecision
1, // do_maxscalelog true, // do_syslog
0 // use_stdout true, // do_maxscalelog
false // use_stdout
}; };
/** /**
@ -130,12 +138,6 @@ static bool flushall_flag;
static bool flushall_started_flag; static bool flushall_started_flag;
static bool flushall_done_flag; static bool flushall_done_flag;
/**
* Default augmentation.
*/
static int default_log_augmentation = 0;
static int log_augmentation = default_log_augmentation;
/** This is used to detect if the initialization of the log manager has failed /** This is used to detect if the initialization of the log manager has failed
* and that it isn't initialized again after a failure has occurred. */ * and that it isn't initialized again after a failure has occurred. */
static bool fatal_error = false; static bool fatal_error = false;
@ -625,7 +627,7 @@ static int logmanager_write_log(int priority,
// The config parameters are copied to local variables, because the values in // The config parameters are copied to local variables, because the values in
// log_config may change during the course of the function, with would have // log_config may change during the course of the function, with would have
// unpleasant side-effects. // unpleasant side-effects.
int highprec = log_config.highprec; int do_highprecision = log_config.do_highprecision;
int do_maxscalelog = log_config.do_maxscalelog; int do_maxscalelog = log_config.do_maxscalelog;
int do_syslog = log_config.do_syslog; int do_syslog = log_config.do_syslog;
@ -655,7 +657,7 @@ static int logmanager_write_log(int priority,
{ {
sesid_str_len = 0; sesid_str_len = 0;
} }
if (highprec) if (do_highprecision)
{ {
timestamp_len = get_timestamp_len_hp(); timestamp_len = get_timestamp_len_hp();
} }
@ -733,7 +735,7 @@ static int logmanager_write_log(int priority,
* to wp. * to wp.
* Returned timestamp_len doesn't include terminating null. * Returned timestamp_len doesn't include terminating null.
*/ */
if (highprec) if (do_highprecision)
{ {
timestamp_len = snprint_timestamp_hp(wp, timestamp_len); timestamp_len = snprint_timestamp_hp(wp, timestamp_len);
} }
@ -1210,7 +1212,7 @@ static bool logfile_set_enabled(logfile_id_t id, bool val)
if (logmanager_is_valid_id(id)) if (logmanager_is_valid_id(id))
{ {
if (log_config.use_stdout == 0) if (!log_config.use_stdout)
{ {
const char *name; const char *name;
@ -1260,14 +1262,14 @@ static bool logfile_set_enabled(logfile_id_t id, bool val)
return rval; return rval;
} }
void skygw_log_set_augmentation(int bits) /**
* Set log augmentation.
*
* @param bits One of the log_augmentation_t constants.
*/
void mxs_log_set_augmentation(int bits)
{ {
log_augmentation = bits & LOG_AUGMENTATION_MASK; log_config.augmentation = bits & LOG_AUGMENTATION_MASK;
}
int skygw_log_get_augmentation()
{
return log_augmentation;
} }
/** /**
@ -1430,12 +1432,12 @@ static bool fnames_conf_init(fnames_conf_t* fn, const char* logdir)
const char* dir; const char* dir;
if (logdir) if (logdir)
{ {
log_config.use_stdout = 0; log_config.use_stdout = false;
dir = logdir; dir = logdir;
} }
else else
{ {
log_config.use_stdout = 1; log_config.use_stdout = true;
// TODO: Re-arrange things so that fn->fn_logpath can be NULL. // TODO: Re-arrange things so that fn->fn_logpath can be NULL.
dir = "/tmp"; dir = "/tmp";
} }
@ -2561,31 +2563,33 @@ void flushall_logfiles(bool flush)
} }
/** /**
* Toggle high precision logging * Enable/disable syslog logging.
* @param val 0 for disabled, 1 for enabled *
* @param enabled True, if high precision logging should be enabled, false if it should be disabled.
*/ */
void skygw_set_highp(int val) void mxs_log_set_highprecision_enabled(bool enabled)
{ {
log_config.highprec = !!val; log_config.do_highprecision = enabled;
}
/**
* Toggle syslog logging
* @param val 0 for disabled, 1 for enabled
*/
void logmanager_enable_syslog(int val)
{
log_config.do_syslog = !!val;
} }
/** /**
* Toggle syslog logging * Enable/disable syslog logging.
* @param val 0 for disabled, 1 for enabled *
* @param enabled True, if syslog logging should be enabled, false if it should be disabled.
*/ */
void logmanager_enable_maxscalelog(int val) void mxs_log_set_syslog_enabled(bool enabled)
{ {
log_config.do_maxscalelog = !!val; log_config.do_syslog = enabled;
}
/**
* Enable/disable maxscale log logging.
*
* @param enabled True, if syslog logging should be enabled, false if it should be disabled.
*/
void mxs_log_set_maxscalelog_enabled(bool enabled)
{
log_config.do_maxscalelog = enabled;
} }
@ -2736,12 +2740,14 @@ static bool convert_priority_to_file(int priority, logfile_id_t* idp, const char
} }
/** /**
* Enable a particular syslog priority. * Enable/disable a particular syslog priority.
* *
* @param priority One of the LOG_ERR etc. constants from sys/syslog.h. * @param priority One of the LOG_ERR etc. constants from sys/syslog.h.
* @param enabled True if the priority should be enabled, false if it to be disabled.
*
* @return 0 if the priority was valid, -1 otherwise. * @return 0 if the priority was valid, -1 otherwise.
*/ */
int mxs_log_enable_priority(int priority) int mxs_log_set_priority_enabled(int priority, bool enabled)
{ {
int rv = -1; int rv = -1;
logfile_id_t id; logfile_id_t id;
@ -2751,48 +2757,18 @@ int mxs_log_enable_priority(int priority)
{ {
if (!text) if (!text)
{ {
rv = skygw_log_enable(id); if (enabled)
{
rv = skygw_log_enable(id);
}
else
{
rv = skygw_log_disable(id);
}
} }
else else
{ {
// TODO: Change to warning when available. MXS_WARNING("Attempt to enable syslog priority %s, which is not available yet.", text);
MXS_DEBUG("Attempt to enable syslog priority %s, which is not available yet.", text);
rv = 0;
}
}
else
{
MXS_ERROR("Attempt to enable unknown syslog priority: %d", priority);
}
return rv;
}
/**
* Disable a particular syslog priority.
*
* @param priority One of the LOG_ERR etc. constants from sys/syslog.h.
*
* Note that there is no hierarchy. That is, disabling a priority of
* high importance, such as LOG_ERR, does not automatically disable
* all lower prioritys.
*/
int mxs_log_disable_priority(int priority)
{
int rv = -1;
logfile_id_t id;
const char* text;
if (convert_priority_to_file(priority, &id, &text))
{
if (!text)
{
rv = skygw_log_disable(id);
}
else
{
// TODO: Change to warning when available.
MXS_DEBUG("Attempt to enable syslog priority %s, which is not available.", text);
rv = 0; rv = 0;
} }
} }
@ -2969,9 +2945,10 @@ int mxs_log_message(int priority,
static const char FORMAT_FUNCTION[] = "(%s): "; static const char FORMAT_FUNCTION[] = "(%s): ";
int augmentation = log_config.augmentation; // Other thread might change log_config.augmentation.
int augmentation_len = 0; int augmentation_len = 0;
switch (log_augmentation) switch (augmentation)
{ {
case LOG_AUGMENT_WITH_FUNCTION: case LOG_AUGMENT_WITH_FUNCTION:
augmentation_len = sizeof(FORMAT_FUNCTION) - 1; // Remove trailing 0 augmentation_len = sizeof(FORMAT_FUNCTION) - 1; // Remove trailing 0
@ -3005,7 +2982,7 @@ int mxs_log_message(int priority,
{ {
int len = 0; int len = 0;
switch (log_augmentation) switch (augmentation)
{ {
case LOG_AUGMENT_WITH_FUNCTION: case LOG_AUGMENT_WITH_FUNCTION:
len = sprintf(augmentation_text, FORMAT_FUNCTION, function); len = sprintf(augmentation_text, FORMAT_FUNCTION, function);

View File

@ -145,8 +145,11 @@ int mxs_log_flush();
int mxs_log_flush_sync(); int mxs_log_flush_sync();
int mxs_log_rotate(); int mxs_log_rotate();
int mxs_log_enable_priority(int priority); int mxs_log_set_priority_enabled(int priority, bool enabled);
int mxs_log_disable_priority(int priority); void mxs_log_set_syslog_enabled(bool enabled);
void mxs_log_set_maxscalelog_enabled(bool enabled);
void mxs_log_set_highprecision_enabled(bool enabled);
void mxs_log_set_augmentation(int bits);
int mxs_log_message(int priority, int mxs_log_message(int priority,
const char* file, int line, const char* function, const char* file, int line, const char* function,
@ -154,9 +157,6 @@ int mxs_log_message(int priority,
int skygw_log_enable(logfile_id_t id); int skygw_log_enable(logfile_id_t id);
int skygw_log_disable(logfile_id_t id); int skygw_log_disable(logfile_id_t id);
void skygw_set_highp(int);
void logmanager_enable_syslog(int);
void logmanager_enable_maxscalelog(int);
inline int mxs_log_id_to_priority(logfile_id_t id) inline int mxs_log_id_to_priority(logfile_id_t id)
{ {
@ -172,14 +172,6 @@ inline int mxs_log_id_to_priority(logfile_id_t id)
#define skygw_log_write_flush(id, format, ...) skygw_log_write(id, format, ##__VA_ARGS__) #define skygw_log_write_flush(id, format, ...) skygw_log_write(id, format, ##__VA_ARGS__)
/**
* What augmentation if any should a logged message be augmented with.
*
* Currently this is a global setting and affects all loggers.
*/
void skygw_log_set_augmentation(int bits);
int skygw_log_get_augmentation();
EXTERN_C_BLOCK_END EXTERN_C_BLOCK_END
/** /**

View File

@ -1629,7 +1629,7 @@ handle_global_item(const char *name, const char *value)
} }
else if (strcmp(name, "ms_timestamp") == 0) else if (strcmp(name, "ms_timestamp") == 0)
{ {
skygw_set_highp(config_truth_value((char*)value)); mxs_log_set_highprecision_enabled(config_truth_value((char*)value));
} }
else if (strcmp(name, "auth_connect_timeout") == 0) else if (strcmp(name, "auth_connect_timeout") == 0)
{ {

View File

@ -1713,8 +1713,9 @@ int main(int argc, char **argv)
{ {
printf("MaxScale logging is disabled.\n"); printf("MaxScale logging is disabled.\n");
} }
logmanager_enable_syslog(*syslog_enabled);
logmanager_enable_maxscalelog(*maxscalelog_enabled); mxs_log_set_syslog_enabled(*syslog_enabled);
mxs_log_set_maxscalelog_enabled(*maxscalelog_enabled);
succp = mxs_log_init(NULL, get_logdir(), log_target); succp = mxs_log_init(NULL, get_logdir(), log_target);
@ -2342,7 +2343,7 @@ void set_log_augmentation(const char* value)
if (!augmentation_set) if (!augmentation_set)
{ {
skygw_log_set_augmentation(atoi(value)); mxs_log_set_augmentation(atoi(value));
augmentation_set = true; augmentation_set = true;
} }

View File

@ -126,7 +126,7 @@ int main(int argc, char **argv) {
mxs_log_init(NULL, NULL, LOG_TARGET_DEFAULT); mxs_log_init(NULL, NULL, LOG_TARGET_DEFAULT);
skygw_log_set_augmentation(0); mxs_log_set_augmentation(0);
if (!debug_out) if (!debug_out)
skygw_log_disable(LOGFILE_DEBUG); skygw_log_disable(LOGFILE_DEBUG);

View File

@ -1577,7 +1577,7 @@ static void enable_log_priority(DCB *dcb, char *arg1)
if (priority != -1) if (priority != -1)
{ {
mxs_log_enable_priority(priority); mxs_log_set_priority_enabled(priority, true);
} }
else else
{ {
@ -1595,7 +1595,7 @@ static void disable_log_priority(DCB *dcb, char *arg1)
if (priority != -1) if (priority != -1)
{ {
mxs_log_enable_priority(priority); mxs_log_set_priority_enabled(priority, false);
} }
else else
{ {