logging: Add a timestamp to the log messages we emit

This commit is contained in:
nick
2013-06-06 11:57:05 +01:00
parent 26c7f1b1c4
commit 24858fcde5
5 changed files with 38 additions and 7 deletions

View File

@@ -94,7 +94,10 @@ error to set both --verbose and --quiet. The last one wins.
The log line format is:
<LEVEL>:<PID> <THREAD> <SOURCEFILE>:<SOURCELINE>: <MSG>
<TIMESTAMP> <LEVEL>:<PID> <THREAD> <SOURCEFILE>:<SOURCELINE>: <MSG>
*TIMESTAMP*:
Time the log entry was made. This is expressed as milliseconds since the epoc.
*LEVEL*:
This will be one of 'D', 'I', 'W', 'E', 'F' in increasing order of

View File

@@ -278,7 +278,10 @@ error to set both --verbose and --quiet. The last one wins.
The log line format is:
<LEVEL>:<PID> <THREAD> <SOURCEFILE>:<SOURCELINE>: <MSG>
<TIMESTAMP> <LEVEL>:<PID> <THREAD> <SOURCEFILE>:<SOURCELINE>: <MSG>
*TIMESTAMP*:
Time the log entry was made. This is expressed as milliseconds since the epoc.
*LEVEL*:
This will be one of 'D', 'I', 'W', 'E', 'F' in increasing order of

View File

@@ -22,7 +22,7 @@ TEST_SOURCES = FileList['tests/unit/*.c']
TEST_OBJECTS = TEST_SOURCES.pathmap( "%{^tests/unit,build/tests}X.o" )
LIBS = %w( pthread )
LDFLAGS = []
LDFLAGS = ["-lrt"]
CCFLAGS = %w(
-D_GNU_SOURCE=1
-Wall

View File

@@ -6,10 +6,11 @@
#include <errno.h>
#include <malloc.h>
#include <unistd.h>
#include <time.h>
#include "util.h"
pthread_key_t cleanup_handler_key;
pthread_key_t cleanup_handler_key;
int log_level = 2;
@@ -21,10 +22,10 @@ void error_init(void)
void error_handler(int fatal)
{
DECLARE_ERROR_CONTEXT(context);
if (context) {
longjmp(context->jmp, fatal ? 1 : 2 );
}
}
else {
if ( fatal ) { abort(); }
else { pthread_exit((void*) 1); }
@@ -50,6 +51,25 @@ void mylog(int line_level, const char* format, ...)
va_end(argptr);
}
uint64_t monotonic_time_ms()
{
struct timespec ts;
uint64_t seconds_ms, nanoseconds_ms;
FATAL_IF_NEGATIVE(
clock_gettime(CLOCK_MONOTONIC, &ts),
SHOW_ERRNO( "clock_gettime failed" )
);
seconds_ms = ts.tv_sec;
seconds_ms = seconds_ms * 1000;
nanoseconds_ms = ts.tv_nsec;
nanoseconds_ms = nanoseconds_ms / 1000000;
return seconds_ms + nanoseconds_ms;
}
void* xrealloc(void* ptr, size_t size)
{

View File

@@ -8,6 +8,7 @@
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <inttypes.h>
void* xrealloc(void* ptr, size_t size);
void* xmalloc(size_t size);
@@ -85,9 +86,13 @@ void error_handler(int fatal);
/* mylog a line at the given level (0 being most verbose) */
void mylog(int line_level, const char* format, ...);
/* Returns the current time, in milliseconds, from CLOCK_MONOTONIC */
uint64_t monotonic_time_ms(void);
#define levstr(i) (i==0?'D':(i==1?'I':(i==2?'W':(i==3?'E':'F'))))
#define myloglev(level, msg, ...) mylog( level, "%c:%d %p %s:%d: "msg"\n", levstr(level), getpid(),pthread_self(), __FILE__, __LINE__, ##__VA_ARGS__ )
#define myloglev(level, msg, ...) mylog( level, "%"PRIu64":%c:%d %p %s:%d: "msg"\n", monotonic_time_ms(), levstr(level), getpid(),pthread_self(), __FILE__, __LINE__, ##__VA_ARGS__ )
#ifdef DEBUG
# define debug(msg, ...) myloglev(0, msg, ##__VA_ARGS__)