Added support for logging messages to multiple logfiles in a single call.

This commit is contained in:
Markus Makela
2015-04-09 20:59:52 +03:00
parent 16dcb34908
commit 86768966b9

View File

@ -1368,7 +1368,7 @@ int skygw_log_write_flush(
const char* str, const char* str,
...) ...)
{ {
int err = 0; int i,err = 0;
va_list valist; va_list valist;
size_t len; size_t len;
@ -1379,15 +1379,6 @@ int skygw_log_write_flush(
} }
CHK_LOGMANAGER(lm); CHK_LOGMANAGER(lm);
/**
* If particular log is disabled in general and it is not enabled for
* the current session, then unregister and return.
*/
if (!LOG_IS_ENABLED(id))
{
err = 1;
goto return_unregister;
}
/** /**
* Find out the length of log string (to be formatted str). * Find out the length of log string (to be formatted str).
*/ */
@ -1401,16 +1392,27 @@ int skygw_log_write_flush(
/** /**
* Write log string to buffer and add to file write list. * Write log string to buffer and add to file write list.
*/ */
va_start(valist, str); for(i = LOGFILE_FIRST;i<=LOGFILE_LAST;i <<=1)
err = logmanager_write_log(id, true, true, true, false, len, str, valist); {
va_end(valist); /**
* If particular log is disabled in general and it is not enabled for
* the current session, check the next log.
*/
if (!LOG_IS_ENABLED(i) || (i & id) == 0)
{
continue;
}
if (err != 0) { va_start(valist, str);
fprintf(stderr, "skygw_log_write_flush failed.\n"); err = logmanager_write_log((logfile_id_t)i, true, true, true, false, len, str, valist);
goto return_unregister; va_end(valist);
if (err != 0) {
fprintf(stderr, "skygw_log_write_flush failed.\n");
break;
}
} }
return_unregister:
logmanager_unregister(); logmanager_unregister();
return_err: return_err:
return err; return err;
@ -1423,7 +1425,7 @@ int skygw_log_write(
const char* str, const char* str,
...) ...)
{ {
int err = 0; int i,err = 0;
va_list valist; va_list valist;
size_t len; size_t len;
@ -1438,11 +1440,7 @@ int skygw_log_write(
* If particular log is disabled in general and it is not enabled for * If particular log is disabled in general and it is not enabled for
* the current session, then unregister and return. * the current session, then unregister and return.
*/ */
if (!LOG_IS_ENABLED(id))
{
err = 1;
goto return_unregister;
}
/** /**
* Find out the length of log string (to be formatted str). * Find out the length of log string (to be formatted str).
*/ */
@ -1457,16 +1455,27 @@ int skygw_log_write(
* Write log string to buffer and add to file write list. * Write log string to buffer and add to file write list.
*/ */
va_start(valist, str); for(i = LOGFILE_FIRST;i<=LOGFILE_LAST;i <<=1)
err = logmanager_write_log(id, false, true, true, false, len, str, valist); {
va_end(valist); /**
* If particular log is disabled in general and it is not enabled for
* the current session, check the next log.
*/
if (!LOG_IS_ENABLED(i) || (i & id) == 0)
{
continue;
}
if (err != 0) { va_start(valist, str);
fprintf(stderr, "skygw_log_write failed.\n"); err = logmanager_write_log((logfile_id_t)i, false, true, true, false, len, str, valist);
goto return_unregister; va_end(valist);
if (err != 0) {
fprintf(stderr, "skygw_log_write failed.\n");
break;
}
} }
return_unregister:
logmanager_unregister(); logmanager_unregister();
return_err: return_err:
return err; return err;