/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
+#define _LARGEFILE_SOURCE 1
+#include "config.h"
+
#include <locale.h>
#include <libintl.h>
#define _(str) gettext(str)
#include <stdarg.h>
#include <stdio.h>
+#include <stdlib.h>
#include <sys/time.h>
+#include <time.h>
#include "log.h"
+#include "ptime.h"
static FILE *file;
int log_level = LOG_WARN;
#define LOG_BUFFER 4096
static void vlogf(int lvl, const char *fmt, va_list ap)
{
- struct timeval tv;
char buffer[1 + LOG_BUFFER];
- char *lvl_str;
+ char *lvl_str, *t;
FILE *stdf;
if (lvl > LOG_INFO && (!file || lvl > log_level))
vsnprintf(buffer, LOG_BUFFER, fmt, ap);
buffer[LOG_BUFFER] = '\0';
- if (gettimeofday(&tv, NULL) != 0)
- timerclear(&tv);
-
switch (lvl) {
case LOG_WARN:
lvl_str = "[WARN]";
lvl_str = "[??]";
}
+ t = get_time_str();
+ if (!t)
+ return ;
+
if (file && lvl <= log_level) {
- fprintf(file, "[%ld] %s %s\n", tv.tv_sec, lvl_str, buffer);
+ fprintf(file, "[%s] %s %s\n", t, lvl_str, buffer);
fflush(file);
+ } else {
+ t = NULL;
}
if (lvl <= LOG_INFO) {
else
stdf = stdout;
- fprintf(stdf, "[%ld] %s %s\n", tv.tv_sec, lvl_str, buffer);
+
+ fprintf(stdf, "[%s] %s %s\n", t, lvl_str, buffer);
}
+
+ free(t);
}
void log_printf(int lvl, const char *fmt, ...)
vlogf(LOG_WARN, fmt, ap);
va_end(ap);
}
+
+void log_info(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ vlogf(LOG_INFO, fmt, ap);
+ va_end(ap);
+}