summaryrefslogtreecommitdiff
path: root/server-tools/instance-manager/log.cc
diff options
context:
space:
mode:
Diffstat (limited to 'server-tools/instance-manager/log.cc')
-rw-r--r--server-tools/instance-manager/log.cc114
1 files changed, 68 insertions, 46 deletions
diff --git a/server-tools/instance-manager/log.cc b/server-tools/instance-manager/log.cc
index 302507c043e..cd22224c42e 100644
--- a/server-tools/instance-manager/log.cc
+++ b/server-tools/instance-manager/log.cc
@@ -13,14 +13,16 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-#include <my_global.h>
-
#include "log.h"
-#include "portability.h"
-#include <stdarg.h>
+
+#include <my_global.h>
#include <m_string.h>
#include <my_sys.h>
+#include <stdarg.h>
+
+#include "portability.h" /* for vsnprintf() on Windows. */
+
/*
TODO:
- add flexible header support
@@ -30,11 +32,12 @@
/*
Format log entry and write it to the given stream.
- SYNOPSYS
+ SYNOPSIS
log()
*/
-static inline void log(FILE *file, const char *format, va_list args)
+static void log(FILE *file,const char *level_tag, const char *format,
+ va_list args)
{
/*
log() should be thread-safe; it implies that we either call fprintf()
@@ -49,14 +52,17 @@ static inline void log(FILE *file, const char *format, va_list args)
struct tm bd_time; // broken-down time
localtime_r(&now, &bd_time);
- char buff_date[32];
- sprintf(buff_date, "%02d%02d%02d %2d:%02d:%02d\t",
- bd_time.tm_year % 100,
- bd_time.tm_mon + 1,
- bd_time.tm_mday,
- bd_time.tm_hour,
- bd_time.tm_min,
- bd_time.tm_sec);
+ char buff_date[128];
+ sprintf(buff_date, "[%d/%lu] [%02d/%02d/%02d %02d:%02d:%02d] [%s] ",
+ (int) getpid(),
+ (unsigned long) pthread_self(),
+ (int) bd_time.tm_year % 100,
+ (int) bd_time.tm_mon + 1,
+ (int) bd_time.tm_mday,
+ (int) bd_time.tm_hour,
+ (int) bd_time.tm_min,
+ (int) bd_time.tm_sec,
+ (const char *) level_tag);
/* Format the message */
char buff_stack[256];
@@ -70,7 +76,7 @@ static inline void log(FILE *file, const char *format, va_list args)
{
int size= sizeof(buff_stack) * 2;
buff_msg= (char*) my_malloc(size, MYF(0));
- while (true)
+ while (TRUE)
{
if (buff_msg == 0)
{
@@ -104,57 +110,73 @@ static inline void log(FILE *file, const char *format, va_list args)
/* don't fflush() the file: buffering strategy is set in log_init() */
}
+/**************************************************************************
+ Logging: implementation of public interface.
+**************************************************************************/
-void log_error(const char *format, ...)
-{
- va_list args;
- va_start(args, format);
- log(stderr, format, args);
- va_end(args);
-}
+/*
+ The function initializes logging sub-system.
+ SYNOPSIS
+ log_init()
+*/
-void log_info(const char *format, ...)
+void log_init()
{
- va_list args;
- va_start(args, format);
- log(stdout, format, args);
- va_end(args);
+ /*
+ stderr is unbuffered by default; there is no good of line buffering,
+ as all logging is performed linewise - so remove buffering from stdout
+ also
+ */
+ setbuf(stdout, 0);
}
-/* TODO: rewrite with buffering print */
-void print_info(const char *format, ...)
+
+/*
+ The function is intended to log error messages. It precedes a message
+ with date, time and [ERROR] tag and print it to the stderr.
+
+ SYNOPSIS
+ log_error()
+ format [IN] format string
+ ... [IN] arguments to format
+*/
+
+void log_error(const char *format, ...)
{
va_list args;
va_start(args, format);
- vfprintf(stdout, format, args);
+ log(stderr, "ERROR", format, args);
va_end(args);
}
-void print_error(const char *format, ...)
+
+/*
+ The function is intended to log information messages. It precedes
+ a message with date, time and [INFO] tag and print it to the stdout.
+
+ SYNOPSIS
+ log_error()
+ format [IN] format string
+ ... [IN] arguments to format
+*/
+
+void log_info(const char *format, ...)
{
va_list args;
va_start(args, format);
- vfprintf(stderr, format, args);
+ log(stdout, "INFO", format, args);
va_end(args);
}
/*
- log_init()
- RETURN VALUE
- 0 ok
- !0 error
-*/
+ The function prints information to the error log and eixt(1).
-void log_init()
-{
- /*
- stderr is unbuffered by default; there is no good of line buffering,
- as all logging is performed linewise - so remove buffering from stdout
- also
- */
- setbuf(stdout, 0);
-}
+ SYNOPSIS
+ die()
+ format [IN] format string
+ ... [IN] arguments to format
+*/
void die(const char *format, ...)
{