static FILE* log_output;
 static log_callback_t *log_callbacks = NULL;
 
-static time_t start;
+static long long start;
 
 static char *log_strings[5] =
 {
                if (debug_level >= LOG_DEBUG)
                {
                        /* print with count and time information */
-                       int t=(int)(time(NULL)-start);
+                       int t=(int)(timeval_ms()-start);
                        fprintf(log_output, "%s %d %d %s:%d %s(): %s", log_strings[level+1], count, t, file, line, function, string);
                }
                else
 
 int log_register_commands(struct command_context_s *cmd_ctx)
 {
-       start = time(NULL);
+       start = timeval_ms();
        register_command(cmd_ctx, NULL, "log_output", handle_log_output_command,
                COMMAND_ANY, "redirect logging to <file> (default: stderr)");
        register_command(cmd_ctx, NULL, "debug_level", handle_debug_level_command,
 
 extern int timeval_subtract(struct timeval *result, struct timeval *x, struct timeval *y);
 extern int timeval_add(struct timeval *result, struct timeval *x, struct timeval *y);
 extern int timeval_add_time(struct timeval *result, int sec, int usec);
+/* gettimeofday() timeval in 64 bit ms */
+extern long long timeval_ms();
 
 typedef struct duration_s
 {